Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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_For Loop - Fatal编程技术网

使用Python从列表中提取相关元素的问题

使用Python从列表中提取相关元素的问题,python,for-loop,Python,For Loop,我是Python的初学者。我最近学习了使用循环,并希望进一步提高我在这方面的技能 但是,当我尝试执行for循环时,该循环不会返回任何结果。循环本身试图提取任何包含2个以上的元素,这些元素应该返回Steven和De Gea all_data = [['John','Steven','Mosh'], ['Juan','Mata','De Gea']] names = [] for y in all_data: if y.count("e")>

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

但是,当我尝试执行for循环时,该循环不会返回任何结果。循环本身试图提取任何包含2个以上的元素,这些元素应该返回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
请有人指出我哪里做错了,非常感谢。

工作代码:

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

names = []

for y in all_data:
    for x in y:
        if x.count("e")>=2:
            names.append(x)
names
要找出代码不起作用的原因,请尝试在for循环中打印“y”,查看y迭代的内容

如果您的数组都是[John'、'Steven'、'Mosh'、'Juan'、'Mata'、'De Gea']数据,那么您的代码示例就可以工作了。

工作代码:

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

names = []

for y in all_data:
    for x in y:
        if x.count("e")>=2:
            names.append(x)
names
要找出代码不起作用的原因,请尝试在for循环中打印“y”,查看y迭代的内容


如果您的数组是all_data=[['John'、'Steven'、'Mosh'、'Juan'、'Mata'、'De Gea'],那么您的代码示例就可以工作。

问题在于,您的循环是在列表列表上迭代,而不是在平面列表上迭代

这意味着在for循环中,y取一个列表的值。打印y可以清楚地表明这一点。您要做的是再次迭代y以检查是否满足条件,并将相同的字符串添加到名称中

下面是一个单行列表,我将让您了解这与上面的嵌套循环是如何完全相同的:-

[string for sublist in all_data for string in sublist if string.count("e")>=2]

问题是,循环是在列表列表上迭代,而不是在平面列表上迭代

这意味着在for循环中,y取一个列表的值。打印y可以清楚地表明这一点。您要做的是再次迭代y以检查是否满足条件,并将相同的字符串添加到名称中

下面是一个单行列表,我将让您了解这与上面的嵌套循环是如何完全相同的:-

[string for sublist in all_data for string in sublist if string.count("e")>=2]

您可以通过打印y来检查for循环语句后面的y是什么。提示。这是一个列表。嗨,Daniel,谢谢你的回复。我只尝试了y,它返回了['John'、'Steven'、'Mosh']['Juan'、'Mata'、'De Gea'],这是一个列表。你的y是一个列表,你要做的是迭代它。然后将符合你条件的字符串添加到名称中。检查我的答案是否相同。谢谢你,Akshay,这确实解决了我的问题。你可以通过打印y来检查for循环语句后的y。提示。这是一个列表。嗨,Daniel,谢谢你的回答。我只尝试了y,它返回['John'、'Steven'、'Mosh']['Juan'、'Mata'、'degea'],这是一个列表。你的y是一个列表,你要做的是对它进行迭代。然后将符合你条件的字符串添加到名称中。检查我的答案是否相同。谢谢你,Akshay,这确实解决了我的问题。请在发布之前检查你的代码…它不起作用。测试了代码,但我没有复制它,而是再次编写它以使用正确的变量名s和忘了更改一个变量。代码现在运行感谢您的回答,非常有用。请在发布之前检查您的代码…它不起作用。测试了代码,但我没有复制代码,而是再次编写代码以使用正确的变量名,忘了更改一个变量。代码现在运行感谢您的回答,非常有用。
['Steven', 'De Gea']
[string for sublist in all_data for string in sublist if string.count("e")>=2]
['Steven', 'De Gea']