在python中将值解包到多个变量中
Posted
技术标签:
【中文标题】在python中将值解包到多个变量中【英文标题】:Unpack value into multiple variable in python 【发布时间】:2014-06-23 14:28:39 【问题描述】:以下代码有效。但是我无法重新创建它/不理解它。有人可以帮助编写所有行来完成代码。
value = #something
var1, var2 = unpack("b8s",value)
这意味着,这里将一个值放入两个变量中。有人可以举个例子吗,怎么可能? 非常感谢。
【问题讨论】:
你知道元组是什么吗? 是的,但我只是修改了问题,它更像是解包到多变量问题,现在与元组无关。 【参考方案1】:你完全有一个循环让它变得复杂。
var1, var2 = tuple
这只是你可以在 python 中做的语法。注意你必须解包整个元组;左侧的变量数必须等于元组中的值数。
例子
myTuple = ("hi","i","am","tuple")
first,second,third,fourth = myTuple
print first
>>hi
print second
>>i
print third
>>am
print fourth
>>tuple
不允许
myTuple = ("hi","i","am","tuple")
first,second = myTuple
>>Exception
【讨论】:
能否给个完整的代码作为示例?谢谢 请注意,在 Python3 中,您实际上可以进行部分解包,如下所示:first, second, *_ = myTuple
。在这种情况下,_
最终将包含元组 ("am", "tuple")
。
@dano 谢谢——我不知道!
这种方式可行,但需要在编码中使用这一行:var1, var2 = unpack("b8s",value)【参考方案2】:
unpack
方法来自struct
模块,它允许您将 Python 字符串视为打包的二进制数据。 unpack('b8s', value)
调用告诉 unpack
将 value
视为包含一个无符号字符 (using 'b'
) 的二进制字符串,它将被解包为 char 的整数值,后跟 char[8]
(使用 @ 987654329@),表示长度为 8 的 char
字符串。它被解压缩为 Python 字符串。所以一个完整的例子应该是这样的:
>>> from struct import unpack
>>> s = "abcdefgty"
>>> int_char, my_str = unpack("b8s", s)
>>> print int_char
97 # 97 is the ascii code of 'a'
>>> print my_str
bcdefgty
【讨论】:
终于明白了,谢谢dano。在“b8s”中,我将值分成两部分,因此是两个变量。如果我写了“bc7s”,我可以将它们放入三个变量中,比如 var1、var2、var3 = unpack("bc7s",value)。所以,变量的数量来自于我划分值的格式。【参考方案3】:如果你有一个元组
t = (1, 2, "a")
你可以这样解压:
a, b, c = t
print "a=", a
打印出来的
a=1
【讨论】:
我知道这种类型的 unpack 有效,但是我想知道是否可以通过保持这一行完整来举例说明:var1, var2 = unpack("b8s",value)【参考方案4】:发生的事情是:unpack
处理 elem
的内容并返回一个包含 2 个项目的元组。每个项目都分配给不同的变量。
都是一样的:
unpacked_value = unpack("b8s",elem)
var1 = unpacked_value[0]
var2 = unpacked_value[1]
使用不同的值和变量:
my_tuple = (1, 2)
var1, var2 = my_tuple
print var1 #outputs 1
print var2 #outputs 2
【讨论】:
谢谢,但你能保持这条线完整并上下添加其他所需的编码吗? var1, var2 = unpack("b8s",value)以上是关于在python中将值解包到多个变量中的主要内容,如果未能解决你的问题,请参考以下文章