python元组创建方式_Python:创建元组列表的优雅方式?

对于这个问题的完全通用方法,您可以考虑使用flatten上的许多变体之一,您可以找到here,其中flatten是一个函数,它接受任意嵌套的iterable并返回其中包含的项的平面列表。

然后将flatten映射到a, b, c的压缩值上并转换为元组。>>> from collections import Iterable

>>> def flatten(l):

... for i in l:

... if isinstance(i, Iterable) and not isinstance(i, basestring):

... for sub in flatten(i):

... yield sub

... else:

... yield i

...

>>> map(tuple, map(flatten, zip(a, b, c)))

[('a', 0, 4, 5, 6, 7), ('a', 1, 9, 10, 11, 12),

('a', 2, 14, 15, 16, 17), ('a', 3, 19, 20, 21, 22)]

或者更简洁地说,修改flatten以接受任意参数列表并返回元组。那么您只需要map:>>> def flat_tuple(*args):

... return tuple(flatten(args))

...

>>> map(flat_tuple, a, b, c)

[('a', 0, 4, 5, 6, 7), ('a', 1, 9, 10, 11, 12),

('a', 2, 14, 15, 16, 17), ('a', 3, 19, 20, 21, 22)]

如果这是一次性的问题,那么上述方法可能会带来更多的麻烦。但是,如果您已经为其他目的定义了flatten,或者您经常这样做,那么上面的方法可以为您节省很多麻烦!

另外,为了好玩,这里有一个关于nneonneo答案的变体,我喜欢:>>> [x + tuple(y) for x, y in zip(zip(a, b), c)]

[('a', 0, 4, 5, 6, 7), ('a', 1, 9, 10, 11, 12),

('a', 2, 14, 15, 16, 17), ('a', 3, 19, 20, 21, 22)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值