Python 如何拆分列表元素并基于空格分隔符替换它们?

Python 如何拆分列表元素并基于空格分隔符替换它们?,python,python-3.x,list,Python,Python 3.x,List,我正在尝试根据空格分隔符拆分我拥有的列表的元素,并用新拆分的字符串替换正在拆分的字符串 到目前为止,我已经尝试了这个方法,我使用了split函数来拆分字符串,但是我无法将拆分的元素(或字符串)追加到原始列表中。 我尝试在列表项上使用join,但这给了我一个语法错误 以下是我迄今为止所做的尝试: myu列表=[ “my_label2 new_label2 my_label”, “标签测试1标签测试2标签测试3”, “我的标签2新的标签2我的标签” ] 对于my_列表中的项目: 如果项目中有“”:

我正在尝试根据空格分隔符拆分我拥有的
列表的元素
,并用新拆分的字符串替换正在拆分的字符串

到目前为止,我已经尝试了这个方法,我使用了
split
函数来拆分字符串,但是我无法将拆分的元素(或字符串)追加到原始列表中。 我尝试在列表项上使用
join
,但这给了我一个语法错误

以下是我迄今为止所做的尝试:

myu列表=[
“my_label2 new_label2 my_label”,
“标签测试1标签测试2标签测试3”,
“我的标签2新的标签2我的标签”
]
对于my_列表中的项目:
如果项目中有“”:
打印(真)
我的清单。附加(i)
印刷品(一)
其他:
打印(假)
打印(我的列表)
但是我的代码没有给出预期的结果。 我得到的结果
列表
是:

['my_label2 new_label2 my_label','label_test1 label_test2 label_test3','my_label2 new_label2 my_label2',['my_label2','label_test1','label_test2','label_test3',['my_label2','new_label2','my_label2']
但我实际上想得到的是这样的东西:

原始列表:

['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']
>>> [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']
新列表:

['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']
>>> [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']
那么:

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']
,从内置库,您可以将2个以上的iterables链成一个。

如何:

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']

chains
,从内置库中,允许您将2个以上的iterable链接成一个。

使用
str.split
chain.from\u 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']
['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']
>>> [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']

使用
str.split
chain.from\u 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']
['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']
>>> [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']
试试这个

>>> my_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']
>>> [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']
试试这个

>>> my_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']
>>> [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']
-用于合并两个列表或在一个列表中插入多个元素

-通过指定的分隔符打断给定字符串后,返回字符串列表。默认情况下,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:

-用于合并两个列表或在一个列表中插入多个元素

-通过指定的分隔符打断给定字符串后,返回字符串列表。默认情况下,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_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)

这件作品可以给出结果,但这是最好的方法吗

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)

这可以在命令提示符下工作,但不能在python脚本中工作passed@PDoe是否已复制并粘贴代码?如果使用
i
,则只有您才能获得相同的列表,而不是
j
。这在命令提示符中对我有效,但在python脚本中无效。输出是相同的列表passed@PDoe是否已复制并粘贴代码?如果使用
i
,则只有您才能得到相同的列表,而不是
j
。在循环使用列表时,您不应对其进行变异或修改。始终创建一个新列表,并保持旧列表的原样。在循环使用列表时,绝对不应对其进行变异或修改。始终创建一个新列表,并保持旧列表不变。