微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:给定一个整数列表x,如果所有奇数索引值都是其先前值的两倍,则编写一个返回True的表达式

如何解决Python:给定一个整数列表x,如果所有奇数索引值都是其先前值的两倍,则编写一个返回True的表达式

给出一个整数列表,例如, x = [5、10、6、12、10、20、11、22] 编写一个单个表达式,如果所有奇数索引值都返回True 是其先前值的两倍。 我们需要使用跳过切片,压缩,全部和列表理解

我是Python编程的新手(尽管在Java中有丰富的经验)。这只是有关Python语法的基本问题,但我无法做到。 我尝试了以下方法

list(zip(x[::2],x[1::2]))

此表达式返回如下列表 [(5,10),(6,12),(10,20),(11,22)]

在此之后,我迷失了如何检查对上的状况。寻找类似

print(all([False for pair in list(zip(x[::2],x[1::2]))]) "write something in proper format that checks pair values for double condition")

解决方法

使用邮政编码,切片和列表理解

x = [5,10,6,12,20,11,22]
all([b == 2*a for a,b in zip(x[::2],x[1::2])])  # True

说明

数字对生成器

zip(x[::2],x[1::2]) # produces [(5,10),(6,12),(10,20),(11,22)]

在元组中循环(我们将其设置为a,b)

for a,x[1::2]) 

检查条件

b == 2*a   # second number is twice 1st

检查所有地方是否为真

all(...)
,

这吗?

x = [5,22]
result = all(x2 == 2*x1 for x1,x2 in zip(x[::2],x[1::2]))
print(result) # True
,

如何?

In [123]: x
Out[123]: [5,22]

In [124]: all([x[i]/x[i-1]==2 for i in range(1,len(x) - 1,2)])
Out[124]: True

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。