我已经从一个大型数据文件中创建了一个很长的列表列表,现在看起来像这样:
[[1, -1, 10, 0]]
[[2, 1, 20, 5]]
[[3, 2, 15, 10], [4, 2, 50, 10], [5, 2, 90, 10]]
[[6, 3, 15, 11]]
[[7, 4, 50, 11]]
[[8, 5, 90, 11]]
[[9, 6, 13, 14]]
[[10, 7, 50, 14]]
[[11, 8, 70, 14], [12, 8, 95, 14], [13, 8, 75, 14]].....
使用此代码
import csv
import operator
import itertools
with open('data.txt', 'r') as f:
csv_input = csv.reader(f, delimiter=' ', skipinitialspace=True)
headers = next(csv_input)
for k, g in itertools.groupby(csv_input, key=operator.itemgetter(3)):
row = []
for entry in g:
entry = [float(e) for e in entry]
row.append(entry)
print(row)
现在,我想将第一个列表中的第一个值([1,-1,10,0])(即1)与下一个列表第一行中的第二个值(也是1)进行比较然后,我想比较第二个列表第一行的第一个值,即2,与下一个列表的第一行,下一个列表的第二行,然后是第三行。等等...
我知道synax可能很糟糕,但我正在考虑代码的某些内容(从上面的代码继续):
#save list of lists
with open("matrices.csv", "wb") as d:
writer = csv.writer(d)
def listCompare():
lists = d
i=1
if list[i][0] == list[i+1][1]:
return True
else list[i][0] != list[i+1][1]: #***
return False
i+1
continue
有没有人有任何想法我怎么能这样做?从查看与我类似的其他问题,大多数人都有变量分配给每个列表,这是唯一的方法吗?
提前感谢您的帮助!!!
答案 0 :(得分:0)
您收到无效语法错误的原因是因为else
语句不具备条件。所以在你的情况下,你现在有:
if list[i][0] == list[i+1][1]:
return True
else list[i][0] != list[i+1][1]: #problem line
return False
这应该是:
if list[i][0] == list[i+1][1]:
return True
else:
return False
或者如果您想检查另一个条件:
if list[i][0] == list[i+1][1]:
return True
elif (condition goes here):
do something
else:
return False
但是,正如@Alexander Trakhimenok在评论中所说,你甚至不需要这个if-else声明...
return list[i][0] == list[i+1][1]
现在,看看你的代码有几个指针......
你的函数listCompare
没有任何参数,那么你想要lists = d
(我猜测的只是在这个问题上有误)。您可能希望将d
作为参数传递。此外,列表是一个错误的变量名称,我认为它可能只是lists
此外,我不确定您使用i
或continue
的原因,因为现在(修复语法之后)您的代码与此相同:
def listCompare(d):
return d[1][0] == d[2][1]