将string.split()输出为数组元素的一行代码
我有一个字符串 myString
:
myString = "alpha beta gamma"
我想把 myString
拆分成三个单词:
myWords = myString.split()
然后,我可以单独访问每一个单词:
firstWord = myWords[0]
secondWord = myWords[1]
thirdWord = myWords[2]
我的问题:我怎么能在一行代码中把这三个单词赋值出来,作为 split()
函数的输出呢?比如,像这样:
[firstWord secondWord thirdWord] = myString.split()
在 Python 2.7 中,这个语法是什么样的?
4 个回答
-1
另外,可以使用列表推导式...
mystring = "alpha beta gamma"
myWords = [x for x in mystring.split()]
first = myWords[0]
second = myWords[1]
third = myWords[2]
print(first, second, third)
alpha beta gamma
0
上面的回答是对的。如果你想要创建一个列表,可以这样做:
my_list=[first, second, third] = "alpha beta gamma".split()
1
为了更好地解释Pieter先生的回答和TheSoundDefense提到的评论,
如果使用str.split()
时返回的值比你预期的多,程序会报错,提示ValueError: too many values to unpack
。在Python 3中,你可以这样做:
first, second, third, *extraWords = str.split()
这样做会把多出来的部分放到一个叫extraWords
的列表里。不过在Python 2中,这个过程会变得有点复杂,也不太方便,具体可以参考这个问题和回答。
另外,你也可以改变存储变量的方式,使用字典来存储,方法是用一种叫做推导式的方式。
>>> words = {i:word for i,word in enumerate(myString.split())}
>>> words
{0: 'alpha', 1: 'beta', 2: 'gamma'}
这样做的好处是可以完全避免值的拆分(我觉得在Python 2中这样做不是最理想的)。不过,这样会让变量名变得不太清晰,因为它们现在被称为words[0]
,而不是更具体的名称。
5
你尝试的几乎完全可以用:
firstWord, secondWord, thirdWord = myString.split()
演示:
>>> first, second, third = "alpha beta gamma".split()
>>> first
'alpha'
>>> second
'beta'
>>> third
'gamma'