如何从列表中拆分字符串并将其存储到另一个列表中?

时间:2019-10-05 03:01:20

标签: python

我正在尝试根据空格从列表中拆分字符串。

我的代码:

line=['abc def','ghi jk']
for x in line:
    word=x.split(' ')
print(word)

预期输出:

['abc','def','ghi','jk']

但是我一直得到如下输出:

['ghi','jk']

我要去哪里错了?

4 个答案:

答案 0 :(得分:1)

每次word=x.split(' ')运行时,words的先前值将被新值替换。在您的情况下,循环的第一次迭代将创建word = ['abc','def'],第二次迭代将其替换为word = ['ghi','jk']

您需要将每次迭代的结果存储到新列表中:

line = ['abc def', 'ghi jk']
result = []
for x in line:
     result.extend(x.split(' '))
print(result)

答案 1 :(得分:1)

您可以先用空格将字符串连接起来,然后再用空格将字符串分开:

' '.join(line).split()

这将返回:

['abc', 'def', 'ghi', 'jk']

答案 2 :(得分:0)

整齐的单线:

给出line = ['abc def', 'ghi jk']

word = [item for sublist in [elem.split() for elem in line] for item in sublist]

那么你有

>>> word
['abc', 'def', 'ghi', 'jk']

这里发生了什么? [elem.split() for elem in line]list-comprehension,将原始列表elem.split()中的每个元素取line,并将每个结果放入列表中。

>>> [elem.split() for elem in line]
[['abc', 'def'], ['ghi', 'jk']]

然后,假设我们再次使用list-comprehension,并从新嵌套列表的每个元素中获取它具有的每个元素,并将其放入列表中。该过程称为列表的展平,其形式为:

flattened_list = [item for sublist in nestedlists for item in sublist]

答案 3 :(得分:0)

将其拆分,然后展平

line = ['abc def','ghi jk']
temp = [s.split(' ') for s in line]
res = [c for s in temp for c in s]
print(res)

结果

['abc','def','ghi','jk']

或使用 operator reduce

import operator
from functools import reduce
line = [s.split(' ') for s in line]
res = reduce(operator.concat, line)
print(res)

结果:

['abc', 'def', 'ghi', 'jk']
相关问题