args = (i for i in ["A", "B", "C", "A"])
for x in ["C", "B", "A"]:
kw = [i for i in args if i == x]
for j in kw:
print(j)
当我运行此脚本时,结果只有“ C”。 我如何获得所有元素?
答案 0 :(得分:1)
尝试一下:
args = ["A", "B", "C", "A"]
因为您正在使用生成器,这就是为什么它不起作用的原因,所以直接执行列表即可。
完整代码:
args = ["A", "B", "C", "A"]
for x in ["C", "B", "A"]:
kw = [i for i in args if i == x]
for j in kw:
print(j)
输出:
C
B
A
A
当您迭代生成器时,生成器将为空,就像next
一样,它将类似于list.pop(0)
,生成器与def(函数)中的yield相同
答案 1 :(得分:0)
由于args是一个迭代器,因此一旦对其进行迭代(在第三行中进行),就无法再次对其进行迭代。我建议您做的是将args转换为列表或元组。因此,代替此:
args = (i for i in ["A", "B", "C", "A"])
执行以下任一操作:
列表:
args = ["A", "B", "C", "A"]
元组:
args = ("A", "B", "C", "A")
答案 2 :(得分:0)
为什么不呢?
args = (i for i in ["A", "B", "C", "A"])
x = ["C", "B", "A"]:
kw = [i for i in args if i in x]
for j in kw: print(j)