相关疑难解决方法(0)

Python 2中的扩展元组解包

是否可以在Python 2中模拟扩展元组解包?

具体来说,我有一个for循环:

for a, b, c in mylist:
Run Code Online (Sandbox Code Playgroud)

当mylist是大小为3的元组列表时,它工作正常.如果我传入一个大小为四的列表,我希望循环工作相同.

我想我最终会使用命名元组,但我想知道是否有一种简单的写法:

for a, b, c, *d in mylist:
Run Code Online (Sandbox Code Playgroud)

这样可以d吃掉任何额外的成员.

python tuples iterable-unpacking

29
推荐指数
3
解决办法
8883
查看次数

如何从元组中解压缩可选项?

我有一些输入值的列表,其中第一对是强制性的,最后一对是可选的.是否有任何简单的方法可以使用元组解包将这些分配给变量,如果缺少可选参数则获取None.

例如.

a = [1,2]   
foo, bar, baz = a
# baz == None
Run Code Online (Sandbox Code Playgroud)

理想情况下,可以是任何长度 - 包括超过3(其他物品扔掉).

目前我正在使用带有参数名称列表的zip来获取字典:

items = dict(zip(('foo', 'bar', 'baz'), a))
foo = items.get('foo', None)
bar = items.get('bar', None)
baz = items.get('baz', None)
Run Code Online (Sandbox Code Playgroud)

但它有点啰嗦.

python tuples iterable-unpacking

5
推荐指数
2
解决办法
3082
查看次数

如何将元组解压缩到比元组更多的值?

我有一个元组列表,每个元组包含1到5个元素.我想将这些元组解压缩为五个值,但这对于少于五个元素的元组不起作用:

>>> t = (1,2) # or (1) or (1,2,3) or ...
>>> a,b,c,d,e = (t)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
Run Code Online (Sandbox Code Playgroud)

可以将不存在的值设置为None.基本上,如果这个函数我正在寻找更好(更密集)的方法:

def unpack(t):
    if len(t) == 1:
        return t[0], None, None, None, None
    if len(t) == 2:
        return t[0], t[1], None, None, None
    if len(t) == 3:
        return t[0], t[1], t[2], None, None
    if len(t) == 4:
        return t[0], t[1], t[2], t[3], None …
Run Code Online (Sandbox Code Playgroud)

python tuples python-3.x iterable-unpacking

5
推荐指数
1
解决办法
550
查看次数

标签 统计

iterable-unpacking ×3

python ×3

tuples ×3

python-3.x ×1