Python:增加数组索引
我有一个随机csv文件,包含随机数,逗号分隔。为了过滤数据,我正在做一些迭代Python:增加数组索引,python,arrays,python-2.7,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]
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语句远不止这些。我的代码显然工作得很好,因为它没有什么特别之处
我只是想找到一种不用打字就能完成我正在做的事情的方法
如果第[0]行和第[1]行以及第[2]行和..
假设最大值为第[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] ...
我不太清楚如何做到这一点,我希望我的问题是明确的。我认为这是一个类似的例子
我真的不知道该怎么做的部分是如何摆脱和,我的意思是如果我应该写,如果。。。然后,我可以复制粘贴,然后做我正在做的事情,我想要一个更好的解决方案,如果它存在的话
如果存在解决方案,我更希望它是递归的,因为我正在努力消除代码中的循环。您可以与范围比较:
if [int(x) for x in row[0:4]] == range(int(row[0]), int(row[0]) + 4 * i, i):
右侧将是从行[0]
到行[0]+3*i
范围内的整数,增量为i
如果您总是将这些行视为整数,那么事先将行转换为int
的列表可能会更简单:
row = [int(x) for x in row]
因此,您可以更简单地编写条件:
if row[0:4] == range(row[0], row[0] + 4 * i, i):
如果范围(4)中n的all(int(row[n])+i==int(row[n+1]):…
“如果存在解决方案,我更喜欢递归解决方案,因为我正在努力消除代码中的循环。”为什么?递归不是python的强项之一。通常情况下,您会选择另一种方法:删除递归并用迭代方法替换它。您是否尝试查看特定行中的所有内容是否都具有相同的值?您主要是在寻找检查特定长度行值的解决方案,如您的示例4,或者找出一行中有多少个值具有此属性?if[int(x)for x in row[0:4]==range(int(row[0]),int(row[0])+4*i,i: