Python:测试嵌套列表中某些索引的相等性

时间:2017-10-06 17:51:46

标签: python nested-lists

我有以下嵌套列表:

nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]

我想评估每个列表的第一个元素是否相等。我找到了评估整个嵌套列表是否相等但不是特定索引的方法吗?

4 个答案:

答案 0 :(得分:3)

你可以创建一个每个子列表的第一个元素,并且由于集合中没有重复,你可以看到集合的长度是否为1:

nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]

result = len(set(l[0] for l in nlist)) == 1
print(result) # => False

答案 1 :(得分:2)

我会使用all()函数作为参数。

SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("some@email.com"); 

...

简而言之,all(sublist[0] == nlist[0][0] for sublist in nlist) 如果原始列表中每个子列表的每个all()都会返回True。如果任何项目不等于sublist[0] == nlist[0][0],它将返回False

答案 2 :(得分:0)

你可以找到所有唯一的第一个元素,然后检查索引:

>>> from itertools import groupby
>>> nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]
>>> c= [i for i,k in groupby([n[0] for n in nlist])]
>>> c
[2, 0]
>>> d=[[i for i, x in enumerate(nlist) if x[0]==j] for j in c]
>>> d
[[0, 1], [2, 3]]
>>> R=dict(zip(c, d))
>>> R
{0: [2, 3], 2: [0, 1]}

你得到一个dict,其中包含每个第一个可能的值和一个初始列表中的索引列表。

答案 3 :(得分:0)

first_num = nlist[0][0]
for sublist in nlist:
    if first_num != sublist[0]
        print(False)
print(True)