在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) 调用告诉 unpackvalue 视为包含一个无符号字符 (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中将值解包到多个变量中的主要内容,如果未能解决你的问题,请参考以下文章

Python将包含列表元组的字符串解包到变量

将 OctetString 数据解包到变量中以进行进一步处理

在 Python 中将多个变量附加到列表中

练习13--参数,解包,变量

python:将字符串解包到列表中

perl 将函数解包到 python