【问题标题】:Creating a list consisting of elements popped from another list (Python)创建一个由从另一个列表中弹出的元素组成的列表(Python)
【发布时间】:2020-08-11 08:01:49
【问题描述】:

这是我的代码:

txt = '''food: bacon, eggs, toast

drinks: orange juice, coffee'''

groups = txt.split('\n\n')
for group in groups:
    nameslist = group.split(': ').pop(0)

print(groups)
print(nameslist)

print(groups) 的输出符合预期:['food: bacon, eggs, toast', 'drinks: orange juice, coffee']

我正在尝试获取一个列表 ['food', 'drinks'] 作为 print(nameslist) 的输出,但 Python 给了我 'drinks' 作为输出,好像它只从第二个元素中获取而不是迭代。

【问题讨论】:

标签: python list loops for-loop iteration


【解决方案1】:

您的方法的问题是 nameslist 从未初始化,并且在每次迭代时重置,您可能想要这样做:

txt = '''food: bacon, eggs, toast

drinks: orange juice, coffee'''

nameslist = [] # initialize namelist
groups = txt.split('\n\n')
for group in groups:
    nameslist.append(group.split(': ').pop(0)) # append instead of overwriting

print(groups)
print(nameslist)  # ['food', 'drinks']

此外,您可以丢弃循环并使用list comprehension 来实现:

namelist = [x.split(':')[0] for x in groups]  # ['food', 'drinks']

【讨论】:

    【解决方案2】:

    按照您当前的设置方式,您不会向列表中添加任何内容。您只是将变量名称列表设置为最后一个弹出窗口。试试这个:

    nameslist = []  # Define an empty list
    groups = txt.split('\n\n')
    for group in groups:
        nameslist.append(group.split(': ').pop(0)) #Add popped element to the list
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多