Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_List_For Loop_List Comprehension - Fatal编程技术网

Python 不在列表中-列表理解

Python 不在列表中-列表理解,python,list,for-loop,list-comprehension,Python,List,For Loop,List Comprehension,如何在列表理解中添加这样的条件?例: 例: 您的顺序错误,请将if移到末尾 [dict for dict in tempList if dict not in THIS.LIST ] 使用您的方法python需要一个else: [dict if dict not in THIS.LIST else whatever for dict in tempList] 如果要引用正在创建的实际列表,请使用for循环,如果项目是可散列的,则可以使用集合检查元素是否已通过01次查找看到,但如果有dict,

如何在列表理解中添加这样的条件?例:

例:


您的顺序错误,请将if移到末尾

[dict for dict in tempList if dict not in THIS.LIST ]
使用您的方法python需要一个else:

[dict if dict not in THIS.LIST else whatever for dict in tempList]
如果要引用正在创建的实际列表,请使用for循环,如果项目是可散列的,则可以使用集合检查元素是否已通过01次查找看到,但如果有dict,则无法直接使用dict集合:

res = [] 
for dct in temp_list:
    if dct not in res:
        res.append(dct)
或使用列表comp的类似方法,从列表开始到当前索引进行检查:

print([dct for ind, dct in enumerate(temp_list) if dct not in temp_list[:ind]])
如果您只想删除重复的dict,我们可以使用dict.items:

或者使用OrderedICT来维持秩序:

from collections import OrderedDict
temp_list = [ {1:2},{1:2}]

print(list(OrderedDict(((tuple(dct.items()),dct) for dct in temp_list)).values()))
或者再次使用普通循环:

temp_list = [ {1:2},{1:2}]
seen = set()
out = []
for dct in temp_list:
    tup = tuple(dct.items())
    if tup not in seen:
        out.append(dct)
        seen.add(tup)
print(out)

您的顺序错误,请将if移到末尾

[dict for dict in tempList if dict not in THIS.LIST ]
使用您的方法python需要一个else:

[dict if dict not in THIS.LIST else whatever for dict in tempList]
如果要引用正在创建的实际列表,请使用for循环,如果项目是可散列的,则可以使用集合检查元素是否已通过01次查找看到,但如果有dict,则无法直接使用dict集合:

res = [] 
for dct in temp_list:
    if dct not in res:
        res.append(dct)
或使用列表comp的类似方法,从列表开始到当前索引进行检查:

print([dct for ind, dct in enumerate(temp_list) if dct not in temp_list[:ind]])
如果您只想删除重复的dict,我们可以使用dict.items:

或者使用OrderedICT来维持秩序:

from collections import OrderedDict
temp_list = [ {1:2},{1:2}]

print(list(OrderedDict(((tuple(dct.items()),dct) for dct in temp_list)).values()))
或者再次使用普通循环:

temp_list = [ {1:2},{1:2}]
seen = set()
out = []
for dct in temp_list:
    tup = tuple(dct.items())
    if tup not in seen:
        out.append(dct)
        seen.add(tup)
print(out)

如果您想引用由理解本身创建的列表,该怎么办?@Xari使用列表理解无法做到这一点。通过谷歌搜索,您可以找到一些针对具体实现的黑客方法,但坦率地说,您通常不应该这样做。使用不同的数据结构,如集合或for循环。啊,确定要在添加项时检查当前列表吗?您不能使用列表comp执行此操作。你需要一个正常的循环附加和检查,如果列表中有实际的dict,你就不能使用set。如果你想引用由comprehension本身创建的列表,该怎么办?@Xari使用列表comprehension没有干净的方法。通过谷歌搜索,您可以找到一些针对具体实现的黑客方法,但坦率地说,您通常不应该这样做。使用不同的数据结构,如集合或for循环。啊,确定要在添加项时检查当前列表吗?您不能使用列表comp执行此操作。你将需要一个正常的循环附加和检查,如果你在列表中有实际的dict,你就不能使用set。别担心,兄弟。我已经给你的教授发了一张截图。就问题的某些部分寻求帮助并不等同于寻求问题的解决方案。这与当列表理解是更大问题的一部分时寻求帮助是一样的。我只是撤销了对帖子的删除。我只是不喜欢在我被问到的问题中看到有人粗鲁地用粗俗的谩骂而不是恰当的回答。我指的是你删除的问题,而不是这个问题。你甚至公布了问题的来源。它来自一个名为测验4的pdf文件。在顶部,它引用了一份学术诚信声明,你们大概都在课堂上签名了。你在stackoverflow的问题上寻求帮助。在我看来,这是一个明显的作弊例子。别担心,我并没有给你的教授发电子邮件。将来,请尊重教室里的其他学生,不要试图向stackoverflow社区寻求帮助,特别是在你的分级测验中遇到的问题上。别担心,兄弟。我已经给你的教授发了一张截图。就问题的某些部分寻求帮助并不等同于寻求问题的解决方案。这与当列表理解是更大问题的一部分时寻求帮助是一样的。我只是撤销了对帖子的删除。我只是不喜欢在我被问到的问题中看到有人粗鲁地用粗俗的谩骂而不是恰当的回答。我指的是你删除的问题,而不是这个问题。你甚至公布了问题的来源。它来自一个名为测验4的pdf文件。在顶部,它引用了一份学术诚信声明,你们大概都在课堂上签名了。你在stackoverflow的问题上寻求帮助。在我看来,这是一个明显的作弊例子。别担心,我并没有给你的教授发电子邮件。将来,请尊重教室里的其他学生,不要试图向stackoverflow社区寻求帮助,特别是在你的分级测验中遇到的问题上。