我有一个包含随机数的随机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
然后我可以复制粘贴并做什么我在做,我想要一个更好的解决方案,如果它存在。
如果存在解决方案,我更喜欢它是否是递归解决方案,因为我正努力摆脱代码中的循环。
答案 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]