我想将这个列表转换
list = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana']
to
new_list = ['orange','cherry','strawberry','cucumber','tomato','coconut','avocado','apple','blueberry','banana']
这是否有可能做到?请帮我!
我想将这个列表转换
list = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana']
to
new_list = ['orange','cherry','strawberry','cucumber','tomato','coconut','avocado','apple','blueberry','banana']
这是否有可能做到?请帮我!
加入和分离!
>>> lst = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana']
>>> ','.join(lst).split(',')
['orange', 'cherry', 'strawberry', 'cucumber', 'tomato', 'coconut', 'avocado', 'apple', 'blueberry', 'banana']
如果规则是列表中的每个条目可以是代表一个单独项(没有逗号)或由逗号分隔的项列表,则只需在每个条目上使用str.split(',')
即可。
请注意术语,这很重要:
对于没有逗号的条目,str.split
将为您提供只包含该项的列表:
>>> 'cherry'.split(',')
['cherry']
针对包含逗号的条目,它将会返回一个包含该条目所有项的列表:
>>> 'cherry,banana'.split(',')
['cherry', 'banana']
所以你只需要处理列表,对于列表中的每个条目,把它拆分成一个项目列表,并使用这些项目构造一个新列表:
[item for entry in my_list for item in entry.split(',')]
| | \ / \ /
| | \ get each entry / \ get each item of entry /
| | \______________/ \______________________/
| |
+--+------> deliver all items into new list
>>> my_list = ['orange', 'cherry,strawberry', 'apple', 'blueberry,banana']
>>> [item for entry in my_list for item in entry.split(',')]
['orange', 'cherry', 'strawberry', 'apple', 'blueberry', 'banana']
'cherry, pie'
),您应该删除多余的空格。[item.strip() for entry in ...
您可以以","
为分隔符进行拆分,然后使用itertools.chain.from_iterable
函数将子列表展开:
>>> from itertools import chain
>>> lst = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana']
>>> list(chain.from_iterable(x.split(",") for x in lst))
['orange', 'cherry', 'strawberry', 'cucumber', 'tomato', 'coconut', 'avocado', 'apple', 'blueberry', 'banana']
Extend
指将累加器列表 (newvals
) 扩展,同时按照字符串逗号 (","
) 进行分割。
values = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana']
newvals = []
for v in values: newvals.extend(v.split(','))
print(newvals)
输出:
['orange', 'cherry', 'strawberry', 'cucumber', 'tomato', 'coconut', 'avocado', 'apple', 'blueberry', 'banana']
我们还可以将列表展平,如下所示:
list_1 = ['orange','cherry,strawberry','cucumber,tomato,coconut,avocado','apple','blueberry,banana', 2, 2.5]
def to_flatten(my_list, primitives=(bool, str, int, float)):
flatten = []
my_list = [stuff.split(',') if type(stuff) == str else stuff for stuff in list_1]
for item in my_list:
if isinstance(item, primitives):
flatten.append(item)
else:
flatten.extend(item)
return flatten
print(to_flatten(list_1))
这提供了
['orange', 'cherry', 'strawberry', 'cucumber', 'tomato', 'coconut', 'avocado', 'apple', 'blueberry', 'banana', 2, 2.5]
[Program finished]
您可以根据需要更改原始数据类型
[y for x in thelist for y in x.split(',')]
- Steven Rumbalski