如何检查列中列表中的列号是否不同?

时间:2018-01-10 12:46:17

标签: python list

我正在尝试识别包含不同数字的所有列

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"

任何帮助都是精彩的。

3 个答案:

答案 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)

你交换了指数。所以j0,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的版本。