首页 > 解决方案 > 迭代列表并将输出存储在新列表中的更好方法

问题描述

我是 python 的初学者,我希望您对编写以下代码的更复杂的方式提出意见。我希望代码遍历整个项目列表 (x),计算每个项目出现的次数并将输出存储在新列表 (z) 中。这是代码(按原样工作):

x = ["apple", "orange", "cherry", "apple"]

def new_list(a):
    z=[]
    for i in x:
        y = x.count(i)
        (z.append(y))
    return z

print(new_list(x)) 

标签: pythonlistloops

解决方案


我建议做一个列表理解:

>>> x = ["apple", "orange", "cherry", "apple"]
>>> [x.count(val) for val in x]
[2, 1, 1, 2]
>>> 

甚至更好map

>>> [*map(x.count, x)]
[2, 1, 1, 2]
>>> 

推荐阅读