首页 > 解决方案 > 使用 Python 从列表中提取相关元素的问题

问题描述

我是 Python 的初学者。我最近学习了使用循环,并希望进一步提高我的技能。

但是,当我尝试执行 for 循环时,循环什么也不返回。循环本身试图提取包含超过 2es 的任何元素,这应该返回 Steven 和 De Gea。

all_data = [['John','Steven','Mosh'],
           ['Juan','Mata','De Gea']]

names = []

for y in all_data:
    if y.count("e")>=2:
        names.append(y)
names

有人可以指出我做错了什么,非常感谢。

标签: pythonfor-loop

解决方案


问题是您的循环正在迭代 alist of lists而不是 a flat list

这意味着在您的 for 循环中,y采用 a 的值list打印 y 就清楚了。您要做的是iterate over y again检查是否满足条件并将相同的字符串添加到names.

for y in all_data:
    print(y)           #<--------
    if y.count("e")>=2:
        names.append(y)
['John', 'Steven', 'Mosh'] #<-------
['Juan', 'Mata', 'De Gea'] #<------

一个可行的解决方案(具有更清晰的变量命名)将是 -

all_data = [['John','Steven','Mosh'],
           ['Juan','Mata','De Gea']]

names = []

for sublist in all_data:
    for string in sublist:
        if string.count("e")>=2:
            names.append(string)
names
['Steven', 'De Gea']

这是相同的单行列表理解。生病让你弄清楚这与上面的嵌套循环完全相同:) -

[string for sublist in all_data for string in sublist if string.count("e")>=2]
['Steven', 'De Gea']

推荐阅读