繁体   English   中英

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

[英]Python: Test for equality of certain index in nested lists

我有以下嵌套列表:

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

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

您可以对每个子列表的第一个元素进行设置,并且由于集合中没有重复项,因此可以查看集合的长度是否为一个:

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

我将all()函数与生成器表达式一起用作其参数。

all(sublist[0] == nlist[0][0] for sublist in nlist)

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

您可以找到所有唯一的第一个元素,然后检查index:

>>> 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 ,以及一个来自初始列表的索引列表。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM