Python - 从一个字符串中分配2个变量

时间:2013-12-19 15:01:55

标签: python arrays variable-assignment

是一个数组; eventTokens 是一个字符串(值的第一个元素)。双重任务有什么作用? (eventToken1& eventToken2的值是什么?)

values = data.split("\x01")

eventTokens = values.pop(0)
eventToken1, eventToken2 = eventTokens

我已完成输出任务(在Python源代码上),结果如下:

eventTokens is →☹
eventToken1 is →
eventToken2 is ☹

我得出结论,vars以某种方式拆分了初始字符串。但是,如果我尝试编译(显然)类似的东西:

arr = ["some", "elements", "inarray"]
c = arr.pop(0)
a, b = c
print c
print a
print b

导致异常: ValueError:解压缩的值太多

注意:print不是测试环境中的参数化方法

3 个答案:

答案 0 :(得分:3)

c = arr.pop(0)在此处返回"some",但您尝试在此步骤中将值分配给2个变量(其中有4个文字),因此a, b = c失败。

试试这个

arr = ["some", "elements", "inarray"]
c = arr.pop(0)
a, b = arr
print c
print a
print b

答案 1 :(得分:3)

由于eventTokens是一个长度为2的字符串,因此可以将其解压缩为两个单字符串:

>>> a, b = 'ab'
>>> a
'a'
>>> b
'b'

但是,字符串中的字符数必须与要解压缩的变量数相匹配:

>>> a, b = 'abcd'
ValueError: too many values to unpack

请注意,您可以解压缩到一个变量!

>>> a, = 'x'
>>> a
'x'
>>> a, = 'xyz'
ValueError: too many values to unpack

答案 2 :(得分:2)

变量解包是Python在一行中进行多变量赋值的能力。约束条件是表达式右侧的可迭代必须与左侧变量的长度相同。否则,您会收到too manyto little values to unpack例外。

如果您有一个像eventTokens这样的字符串2,那么您可以:

>>>a,b = 'ab'
>>>a
'a'
>>>b
'b'

这是非常不安全的代码。如果以某种方式eventTokens增长大于两个元素,代码将引发异常,您的程序将被关闭。

希望这有帮助!