Python如何将逗号分隔字符串组成的列表展开为独立元素一维列表
问题解答
错误原因
split()是字符串专属方法,你直接对列表对象gf调用split(",")本身就不符合语法,正常运行会直接抛出属性错误。- 你写的嵌套列表推导式逻辑错误:迭代字符串的返回值为单个字符,你把单个字符串当成子列表遍历,最终自然会得到拆成单字母的列表。
解决方案优化
你摸索的循环逻辑已经接近正确,但append()会把每个字符串拆分后的小列表当成单个元素加入,最终得到的是二维列表,还需要做扁平化处理才能得到你要的一维列表,以下是两种可直接运行的实现方案:
方案1:列表推导式实现(简洁写法)
gf = ['citrus fruit,black bread,margarine,ready soups', 'tropical fruit,yogurt,coffee, margarine', 'whole milk'] # 拆分每个字符串的同时用strip()处理掉条目前后的多余空格 gf_n = [item.strip() for s in gf for item in s.split(",")]
运行后直接得到符合预期的一维列表。
方案2:普通循环实现
gf = ['citrus fruit,black bread,margarine,ready soups', 'tropical fruit,yogurt,coffee, margarine', 'whole milk'] gf_n = [] for s in gf: # 拆分当前字符串的所有条目,逐个加入结果列表 for item in s.split(","): gf_n.append(item.strip())
后续频次统计提示
统计单个条目频次可以直接用标准库的collections.Counter:
from collections import Counter item_count = Counter(gf_n)
统计两个条目的组合频次,可先遍历原gf的每个元素拆分后的小列表,生成所有两两不重复组合后再用Counter统计即可。
内容的提问来源于stack exchange,提问作者Toly
相关产品推荐
相关产品推荐

