我正在尝试识别包含不同数字的所有列
for i in range(len(f)):
for j in range(len(f[i])):
if(f[j][i] != f[j][i+1]):
print(f[j][i+1])
例如,如果列表是f = [[3, 5, 6, 7], [7, 5, 6, 3]]
我想获得col 0和col 3,但我得到了:"list index out of range"
任何帮助都是精彩的。
答案 0 :(得分:3)
使用zip
可以获得更好的解决方案:
for i, (a, b) in enumerate(zip(*f)):
if a != b: print i
zip(*f)
为您提供:
In [18]: zip(*f)
Out[18]: [(3, 7), (5, 5), (6, 6), (7, 3)]
现在您可以轻松地比较“列”。
如果你是一个单行人:
[i for i, (a, b) in enumerate(zip(*f)) if a != b]
答案 1 :(得分:1)
j
是0,1,2,3
,当它命中2时,错误发生在你的if子句中。请记住,第一个索引是为您提供子列表的索引,第二个索引是子列表中项目的索引。
这正确地产生0和3:
for i in range(len(f)-1):
for j in range(len(f[i])):
if(f[i][j] != f[i+1][j]):
print(j)
答案 2 :(得分:0)
您可以使用zip
:
f = [[3, 5, 6, 7], [7, 5, 6, 3]]
for n, (i, j) in enumerate(zip(*f)):
if i != j:
print(n)
表达式zip(*f)
遍历'转置'您的列表f
的版本。