【发布时间】:2021-11-03 20:04:38
【问题描述】:
我有一份声明清单。每个语句都有许多其他语句,用逗号分隔。
gf = ['citrus fruit,black bread,margarine,ready soups', 'tropical
fruit,yogurt,coffee, margarine', 'whole milk'] ## it has elements (lists with multiple items separated by EXTERNAL commas).
我需要把它转换成:
gf_n = ['citrus fruit', 'black bread', 'margarine', 'ready soups', 'tropical fruit', 'yogurt', 'coffee', 'margarine','whole milk']
可以重复单个元素(单词或一组单词)。将来,我需要计算每个元素的频率(例如“柑橘类水果”)和每个两项组合的频率(例如“黑面包”和“人造黄油”)
这是我的代码,结果不是我需要的:
gf_list = list(gf.split(","))
gf_item = []
gf_item = [item for sublist in gf_list for item in sublist]
这是我得到的令人惊讶的结果(字母 - 不是文字)
['c', 'i', 't', 'r', 'u', 's', ' ', 'f', 'r', 'u'] # first 10 elements
我做错了什么?
解决方案(经过一段时间我想出了这个):
for subl in lst:
gf_item.append(subl.split(","))
【问题讨论】:
-
请添加指定语言的标签。
-
解析并展平列表 (
gf_n = sum((s.split(',') for s in gf), [])),如果前导和尾随空格不应该保留,则需要修剪它们 ([s.strip() for s in gf_n])。
标签: python list split nested-lists flatten