Python:增加数组索引

时间:2015-06-30 20:19:27

标签: python arrays python-2.7

我有一个包含随机数的随机csv文件,以逗号分隔。我正在进行一些迭代,以便过滤数据

if (int(row[0]) + i == int(row[1])) and int(row[1]) + i == int(row[2]) and int(row[2]) + i == int(row[3]) and int(row[3]) + i == int(row[4]):
    do something
elif (int(row[0]) + i == int(row[1])) and int(row[1]) + i == int(row[2]) and int(row[2]) + i == int(row[3]):
    do something

If语句远不止于此。我的代码显然很完美,因为它没有什么特别之处。

我只想找到一种方法来做我正在做的事情而不必输入

if row[0] and row[1] and row[2] and..

说最大值是row [4],如上例所示,基本上,我想要的东西,就像递归函数一样:

for n in range of 0 to 4
    if row[n] +i == row[n+1]:
        do something
        row[n] == row[n-1]
           if row[n-1] ...

我不太清楚如何做到这一点,我希望我的问题很明确。我认为这是一个类似的question in C#

我不知道该怎么做的部分是如何摆脱and,我的意思是如果我应该写if... and ...and然后我可以复制粘贴并做什么我在做,我想要一个更好的解决方案,如果它存在。

如果存在解决方案,我更喜欢它是否是递归解决方案,因为我正努力摆脱代码中的循环。

1 个答案:

答案 0 :(得分:1)

您可以与range进行比较:

if [int(x) for x in row[0:4]] == range(int(row[0]), int(row[0]) + 4 * i, i):

右侧将是row[0]row[0] + 3 * i范围内的整数,增量为{​​{1}}。

如果您始终将这些行视为整数,那么事先将您的行转换为i list可能会更简单:

int

这样你就可以更简单地写出条件:

row = [int(x) for x in row]