我试图基于空格分隔符来拆分我拥有的list
的元素,并用新拆分的字符串替换正在拆分的字符串。
到目前为止,我已经尝试过使用split
函数拆分字符串,但是无法将拆分元素(或字符串)附加到我的原始列表中。
我尝试在列表项上使用join
,但这给了我语法错误。
这是我到目前为止尝试过的:
my_list = [
'my_label2 new_label2 my_label',
'label_test1 label_test2 label_test3',
'my_label2 new_label2 my_label'
]
for item in my_list:
if ' ' in item:
print(True)
my_list.append(i)
print(i)
else:
print(False)
print(my_list)
但是我的代码没有给我预期的结果。
我得到的结果list
是:
['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label', ['my_label2', 'new_label2', 'my_label'], ['label_test1', 'label_test2', 'label_test3'], ['my_label2', 'new_label2', 'my_label']]
但是我实际上想要得到的是这样的:
原始列表:
['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
新列表:
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2, 'label_test3', 'my_label2', 'new_label2', 'my_label']
答案 0 :(得分:3)
将str.split
与chain.from_iterable
一起使用
Ex
from itertools import chain
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
print(list(chain.from_iterable(i.split() for i in my_list)))
输出:
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
答案 1 :(得分:2)
extend()-用于合并两个列表或在一个列表中插入多个元素。
split()-用指定的分隔符将给定的字符串分隔开后,返回字符串列表。默认情况下,split()将空格用作分隔符。
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list=[]
for elm in my_list:
new_list.extend(elm.split(" "))
print(new_list)
O / P:
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
答案 2 :(得分:1)
那又怎么样:
import itertools
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list = itertools.chain(*[l.split() for l in my_list])
print(list(new_list)) # >> ['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
通过itertools内置库中的 chains
,您可以将2个以上的可迭代对象链接为一个。
答案 3 :(得分:1)
尝试一下
>>> my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
输出:
>>> [j for i in my_list for j in i.split()]
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
答案 4 :(得分:0)
这件作品可以得出结果,但这是最好的方法吗?
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list = []
for item in my_list:
new_list.extend(item.split())
my_list.clear()
my_list.extend(new_list)
print(my_list)