示例:
var1, var2, var3 = argv
解压缩argv[]列表在谷歌和Python 2.7文档上查找,但找不到我的问题的相关答案。
argv[]
5t7ly7z51#
这被称为序列解包,在Python教程5.3节的末尾提到过:语句t = 12345, 54321, 'hello!'是元组打包的示例:值12345、54321和'hello!'被打包在一个元组中。
t = 12345, 54321, 'hello!'
12345
54321
'hello!'
>>> x, y, z = t
这被称为序列解包(sequence unpacking),它对右边的任何序列都有效,序列解包要求等号左边的变量和序列中的元素一样多,注意多重赋值实际上是元组打包和序列解包的结合。
oyt4ldly2#
使用以下工具打开 Package :
相当于执行以下操作:
var1 = argv[0] var2 = argv[1] var3 = argv[2]
不同之处在于,如果argv包含的元素多于(或少于)您给定的变量数,则解包将失败(在本例中,我假设argv只包含3个元素)。
ijxebb2r3#
与答案相反
您不需要在左侧使用正确数量的参数,如果指定一个参数来“获取其余参数”,则可以使用更少的参数-称为"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
fzwojiic4#
在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
这里发生的事情是,对于data变量中的每一项,在每次运行for循环时,单独的项(string和int)被解包到变量name和size中。在您的特定情况下,argv包含从命令行运行脚本时传递的参数,您可以将参数解压缩为变量,这是您在示例中所做的。
for
name
size
argv
cidc1ykv5#
解包会将右边参数的不同值赋给左边不同的参数,所以如果你有a=[0,1,2],你可以这样解包:因此,a0将等于a[0],a1将等于a[1],等等。希望能有所帮助!
a=[0,1,2]
a0
a[0]
a1
a[1]
5条答案
按热度按时间5t7ly7z51#
这被称为序列解包,在Python教程5.3节的末尾提到过:
语句
t = 12345, 54321, 'hello!'
是元组打包的示例:值12345
、54321
和'hello!'
被打包在一个元组中。这被称为序列解包(sequence unpacking),它对右边的任何序列都有效,序列解包要求等号左边的变量和序列中的元素一样多,注意多重赋值实际上是元组打包和序列解包的结合。
oyt4ldly2#
使用以下工具打开 Package :
相当于执行以下操作:
不同之处在于,如果argv包含的元素多于(或少于)您给定的变量数,则解包将失败(在本例中,我假设argv只包含3个元素)。
ijxebb2r3#
与答案相反
您不需要在左侧使用正确数量的参数,如果指定一个参数来“获取其余参数”,则可以使用更少的参数-称为"Extended Iterable Unpacking":
输出:
fzwojiic4#
在Python中,如果你有一个列表、元组或其他可迭代对象,你可以将其中的独立项赋给左边的变量。
例如:
赋值语句左边的变量现在包含了右边的可迭代对象中的元素,这需要你在左边有正确数量的变量来把右边的可迭代对象中的元素放入。
这在循环中非常方便:
这里发生的事情是,对于data变量中的每一项,在每次运行
for
循环时,单独的项(string和int)被解包到变量name
和size
中。在您的特定情况下,
argv
包含从命令行运行脚本时传递的参数,您可以将参数解压缩为变量,这是您在示例中所做的。cidc1ykv5#
解包会将右边参数的不同值赋给左边不同的参数,所以如果你有
a=[0,1,2]
,你可以这样解包:因此,a0
将等于a[0]
,a1
将等于a[1]
,等等。希望能有所帮助!