Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将条带解包为整数和列表的组合_Python_Python 3.x - Fatal编程技术网

Python 将条带解包为整数和列表的组合

Python 将条带解包为整数和列表的组合,python,python-3.x,Python,Python 3.x,我有类似于123456的字符串,我可以这样解包: id, amount, p0, p1, p2, p3 = [int(i) for i in s.split()] 现在,我将p0-p3放入一个临时列表list=[p0,p1,p2,p3],并对其进行迭代。是否有一种优雅的方法可以跳过最后一步并对x变量执行同样的操作: id, amount, list = ... 您可以使用*将“剩余”值捕获到一个变量中: id, amount, *p_values = [int(i) for i in s.

我有类似于
123456
的字符串,我可以这样解包:

id, amount, p0, p1, p2, p3 = [int(i) for i in s.split()]
现在,我将p0-p3放入一个临时列表
list=[p0,p1,p2,p3]
,并对其进行迭代。是否有一种优雅的方法可以跳过最后一步并对
x
变量执行同样的操作:

id, amount, list = ... 

您可以使用
*
将“剩余”值捕获到一个变量中:

id, amount, *p_values = [int(i) for i in s.split()]
Python在赋值时允许1个这样的变量;在所有不带
*
的其他名称收到一个值后,它将从右侧获取所有剩余值:

>>> foo, bar, *baz = range(5)
>>> foo, bar, baz
(0, 1, [2, 3, 4])
>>> foo, *bar, baz = range(5)
>>> foo, bar, baz
(0, [1, 2, 3], 4)
>>> *foo, bar, baz = range(5)
>>> foo, bar, baz
([0, 1, 2], 3, 4)
见:

简单赋值左侧的元组(或列表)(未为扩充赋值定义解包)最多可包含一个以单个星号开头的表达式(此后称为“带星号”的表达式,而列表中的其他表达式称为“必填”)。这将指定一个子表达式,该子表达式将被分配一个列表,其中包含要解包的iterable中未分配给任何强制表达式的所有项,或者如果没有此类项,则为空列表


您可以使用
*
将“剩余”值捕获到一个变量中:

id, amount, *p_values = [int(i) for i in s.split()]
Python在赋值时允许1个这样的变量;在所有不带
*
的其他名称收到一个值后,它将从右侧获取所有剩余值:

>>> foo, bar, *baz = range(5)
>>> foo, bar, baz
(0, 1, [2, 3, 4])
>>> foo, *bar, baz = range(5)
>>> foo, bar, baz
(0, [1, 2, 3], 4)
>>> *foo, bar, baz = range(5)
>>> foo, bar, baz
([0, 1, 2], 3, 4)
见:

简单赋值左侧的元组(或列表)(未为扩充赋值定义解包)最多可包含一个以单个星号开头的表达式(此后称为“带星号”的表达式,而列表中的其他表达式称为“必填”)。这将指定一个子表达式,该子表达式将被分配一个列表,其中包含要解包的iterable中未分配给任何强制表达式的所有项,或者如果没有此类项,则为空列表

这种方法的“优雅”充其量也值得商榷。但你可以这样做:

list = [int(i) for i in s.split()]
id = list.pop(0)
amount = list.pop(0)
这实际上是更多的代码行,但如果你跟踪的int列表很长,你就不必键入如此长的
p1、p2、p3…
序列并将其放入另一个列表中

这种方法的“优雅”最多也可以讨论。但你可以这样做:

list = [int(i) for i in s.split()]
id = list.pop(0)
amount = list.pop(0)

这实际上是更多的代码行,但是如果你跟踪的int列表很长,你就不必键入这么长的
p1,p2,p3…
序列并将其放入另一个列表中

不要命名你自己的变量
list
,它会隐藏内置变量。不要命名你自己的变量
list
,它会隐藏内置变量。