Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表是否包含与其他内容不同的元素_Python_Python 3.x_List - Fatal编程技术网

Python 检查列表是否包含与其他内容不同的元素

Python 检查列表是否包含与其他内容不同的元素,python,python-3.x,list,Python,Python 3.x,List,是否有一种有效的方法来检查列表是否包含一个元素,而该元素与其他元素不同 我有很多这样的列表: a = ["_", "_", "_", "_"] b = ["_", "b", "_", "_"] c = ["a", "_", "x", "_"] 它们大多是下划

是否有一种有效的方法来检查列表是否包含一个元素,而该元素与其他元素不同

我有很多这样的列表:

a = ["_", "_", "_", "_"]
b = ["_", "b", "_", "_"]
c = ["a", "_", "x", "_"]
它们大多是下划线,但有时有一个元素不是下划线。我只想处理那些“内容”。目前,我使用for循环检查是否有非下划线元素。
有没有更有效的方法?

对于纯布尔检查,您可以使用
map
any
执行类似的操作:

for lst in (a, b, c):
    print(any(map("_".__ne__, lst)))
# False
# True
# True
或者更明确一点:

any(x != "_" for x in lst)
any
与建议的设置长度方法相比,具有短路(第一次击中时停止)的优点:

len(set(lst)) > 1

如果这能让它在现实世界中更快,这取决于你的数据。如果您的大多数列表都是下划线,因此会对其进行整体迭代,那么集合转换(C优化)可能会更快。

对于纯布尔检查,您可以使用
映射
任意
执行类似的操作:

for lst in (a, b, c):
    print(any(map("_".__ne__, lst)))
# False
# True
# True
或者更明确一点:

any(x != "_" for x in lst)
any
与建议的设置长度方法相比,具有短路(第一次击中时停止)的优点:

len(set(lst)) > 1

如果这能让它在现实世界中更快,这取决于你的数据。如果您的大多数列表都是下划线,因此会进行完整的迭代,那么集合转换(C优化)可能会更快。

使用zip浏览列表中的每个项目,使用集合查找唯一的项目,并查找该集合的长度

a = ["_", "_", "_", "_"]
b = ["_", "b", "_", "_"]
c = ["a", "_", "x", "_"]

has_value = [len(set(col))>1 for col in zip(a, b, c)]
输出:

True
True
True
False

使用zip浏览列表中的每个项目,使用集合查找唯一的项目,并查找该集合的长度

a = ["_", "_", "_", "_"]
b = ["_", "b", "_", "_"]
c = ["a", "_", "x", "_"]

has_value = [len(set(col))>1 for col in zip(a, b, c)]
输出:

True
True
True
False

需要某种形式的循环。你做了什么处理,得到的数据结构是什么?我在NLP数据集中循环搜索特定列中的语义角色。其中大多数不是,因此所有这些列都是空的。此外,列的数量是句子中动词的数量,所以我也不能确定元素的数量。我想,计算有多少下划线是值得的,如果它与长度不一样,它一定包含一些东西?需要某种形式的循环。你做了什么处理,得到的数据结构是什么?我在NLP数据集中循环搜索特定列中的语义角色。其中大多数不是,因此所有这些列都是空的。此外,列的数量是句子中动词的数量,所以我也不能确定元素的数量。我想,数一数有多少下划线是值得的,如果它与长度不一样,那么它一定包含了什么?谢谢你的回答,它很好,也很好谢谢你的回答,也很好