在python中解压缩是什么意思?

时间:2019-04-09 14:18:36

标签: python python-2.7

找不到与我的问题相关的答案。 示例:var1,var2,var3 = argv 解压缩argv []列表

查阅了Google和Python 2.7文档

5 个答案:

答案 0 :(得分:1)

这称为序列解包,并在section 5.3 of the Python tutorial的结尾处提到:

  

语句t = 12345, 54321, 'hello!'是元组的示例   包装:将值1234554321'hello!'打包在一起   元组。反向操作也是可能的:

>>> x, y, z = t
     

这被适当地称为 sequence unpacking ,适用于右侧的任何序列。顺序   解压缩要求左侧有尽可能多的变量   等号的符号,因为序列中有元素。注意   多重分配实际上只是元组包装和   序列解压缩。

答案 1 :(得分:1)

使用以下方法打开包装:

var1, var2, var3 = argv

相当于这样做:

var1 = argv[0]
var2 = argv[1]
var3 = argv[2]

区别在于,如果argv所包含的项目多于(或少于)您提供的变量数量(我假设argv仅包含3个元素),则解压缩将失败。

答案 2 :(得分:0)

在Python中,如果您有列表,元组或其他可迭代的对象,则可以将其中的单独项目分配给左侧的变量。

例如:

>>> mylist = [1, 2, 3]
>>> one, two, three = mylist
>>> one
1
>>> two
2
>>> three
3

赋值左侧的变量现在包含右侧可迭代项。这确实需要您在左侧具有正确数量的变量,才能将右侧的可迭代项放入其中。

这在循环中非常方便:

>>> data = [("filename1.txt", 1024),
>>>         ("filename2.txt", 2048),
>>>         ("filename3.txt", 512)]
>>> for name, size in data:
>>>    print(name, "is", size, "bytes")
filename1.txt is 1024 bytes
filename2.txt is 2048 bytes
filename3.txt is 512 bytes

这里发生的是,对于数据变量中的每个项目,每次运行{{1}时,单独的项目(字符串和int)都被解压缩到变量namesize中}}循环。

在特定情况下,for包含从命令行运行脚本时传递的参数。您可以将参数解压缩为变量,这就是您在示例中所做的。

答案 3 :(得分:0)

解压将在不同的左参数内分配右参数的不同值。 因此,如果您有CREATE OR REPLACE FORCE VIEW MGR.V_INDEX_PERFORMANCE ( INDEX_ID , INDEX_NAME, MTD, YTD ) BEQUEATH DEFINER AS SELECT "INDEX_ID" , "INDEX_NAME", "MTD", "YTD" from MIS_PERMAL.MV_INDEX_PERFORMANCE where INDEX_ID in (1045, 2005) AND FIELD_CODE = 'TR' AND CCY_CODE IN ('D', 'USD') order by INDEX_ID, price_date desc; ,可以这样做:a=[0,1,2]。结果,a0,a1,a2 = a等于a0a[0]a1等。

希望有帮助!

答案 4 :(得分:0)

与答案相反

您不需要在左侧具有正确数量的参数,如果您指定一个参数以“获取其余部分”(称为"Extended Iterable Unpacking"),则可以减少参数的数量:

k, l, *i, x = range(20)

print(k) 
print(l) 
print(i)  # *i catches all hat are not otherwise matched
print(x)

输出:

0                                                              # k
1                                                              # l
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]   # *i
19                                                             # x