python - 使用 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
有人可以指出我做错了什么,非常感谢。
解决方案
问题是您的循环正在迭代 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']
推荐阅读
- reactjs - 使用 react-native 发布到服务器后清除文本框
- python - 在python中随机播放字符串数据
- wildfly - Wildfly 14 + Artemis pooledconnectionfactory jmsXA 问题
- r - 将聚合数据与 R 中的实际值相结合
- php - 离子框架和php中的跨域访问被拒绝
- c# - 检查字符串哈希是否包含子字符串哈希
- netsuite - 根据套件脚本条件,NetSuite Inventory 详细子记录应具有 bin(inventoryassignment)
- gradle - 为 Gradle 依赖项分配新名称
- java - 为什么更改系统时间不会触发java预定功能?
- python - Numpy ValueError:操作数无法与形状一起广播(152,1)(151,1)