使用空格分割Python列表的第一个元素

6

我有一个简单的列表如下:

lst = ['11 12221/n']

我想将第一个项目拆分为以下列表:
['11', '12221']

这个问题对我来说似乎很简单,但我无法让它起作用。我的第一种方法是:

lst[0].split() 

但是当我打印列表时,没有发生任何变化。因此,我尝试了以下操作:
newLst=[]

for x in lst:
    newList.append(x.split())

但是我可以从中获得
[['11', '12221\n']]

我认为我对列表推导式有根本性的误解,能否有人解释一下我的代码为什么没成功以及应该如何实现?

谢谢!


1
看起来你需要使用“extend”而不是“append”。请参见这里 - Avision
4个回答

5
我相信您正在寻找这个:

我相信您正在寻找这个:

>>> lst = ['11 12221\n']
>>> # Split on spaces explicitly so that the \n is preserved
>>> lst[0].split(" ")
['11', '12221\n']
>>> # Reassign lst to the list returned by lst[0].split(" ")
>>> lst = lst[0].split(" ")
>>> lst
['11', '12221\n']
>>>

我认为它最初就是lst... - Quintec
@thecoder16 - 不是的,楼主改了。它以前是“list”。让我编辑我的答案。 - user2555451
好的。但我看不到“x秒前编辑”的链接... - Quintec
@thecoder16 - 他在发布后的5分钟宽限期内编辑了他的问题。因此,对帖子的更改不会记录在编辑历史中。 - user2555451
@thecoder16,iCodez是正确的。在OP的问题中确实曾经使用过list - sshashank124
@sshashank124 好的,我只是在问! - Quintec

2

使用列表推导式:

[part for entry in origlist for part in entry.split(None, 1)]

这允许处理多个字符串并同时进行一次拆分(因此每个字符串只创建两个元素)。

2
您可以这样做:
lst = ['11 12221\n']

lst = lst[0].split()

list[0] 告诉你 '11 12221\n',之后你需要使用 split() 并将其赋值回 lst,从而得到:

['11', '12221\n']

你需要将split的结果重新赋值给变量

注意:不应将变量命名为Python保留字之一。可以使用lst代替。

如果只想在一个空格处进行拆分,请使用:split(' ')

演示:http://repl.it/R8w


1
lst[0].split()删除尾随的\n换行符,因此输出将是['11','12221'] - Martijn Pieters
@PaulBarr 这段代码并没有实现你所声称的功能。如果这个答案解决了你的问题,你应该编辑问题以反映出来。 - juanchopanza
@juanchopanza,我的问题字面上想要什么结果?我可能误用了空格这个术语。 - PaulBarr
@PaulBarr 你声称你想要这个:['11','12221\n']。但是上面的代码给出的是['11','12221'] - juanchopanza
1
@juanchopanza 好的,我的意思是将['11 12221\n']拆分为['11','12221'],这个操作的正确术语应该是什么? - PaulBarr
@PaulBarr 请修改您的答案,以便它询问您实际想要的内容。 - juanchopanza

1

您需要将调用std.split的结果分配给某个变量:

>>> my_list = ['11 12221\n']     # do not name a variable after a std lib type
>>> my_list = my_list[0].split()
>>> print my_list
['11', '12221']

主要问题是调用 str.split 返回一个字符串列表,你只是丢弃了结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接