【问题标题】:Extend multiple elements in one line iteration [duplicate]在一行迭代中扩展多个元素[重复]
【发布时间】:2019-04-15 08:08:44
【问题描述】:

对于

A=[1,2,3]

我想得到

B=['r1','t1','r2','t2','r3','t3']

我知道很容易得到['r1','r2','r3']

['r'+str(k) for k in A]

如上所示,如何通过一行循环获得 B?

非常感谢。

【问题讨论】:

标签: python list loops iteration


【解决方案1】:

使用nested list comprehension

A=[1,2,3]

B = [prefix + str(a) for a in A for prefix in 'rt']

【讨论】:

  • 一行好像有两个循环!有用!非常感谢!
【解决方案2】:

您可以使用嵌套列表推导。

>>> A=[1,2,3]                                                                                                                            
>>> [fmt.format(n) for n in A for fmt in ('r{}', 't{}')]                                                                                    
['r1', 't1', 'r2', 't2', 'r3', 't3']

【讨论】:

  • 我最喜欢这个答案!太清楚了!非常感谢!
【解决方案3】:

使用itertools.product

import itertools
list(itertools.product(*[[1,2,3],['r','t']]))
Out[20]: [(1, 'r'), (1, 't'), (2, 'r'), (2, 't'), (3, 'r'), (3, 't')]
[y +str(x) for x, y in list(itertools.product(*[[1, 2, 3], ['r', 't']]))]
Out[22]: ['r1', 't1', 'r2', 't2', 'r3', 't3']

【讨论】:

  • 我想你可能想要y + str(x) 但除此之外,好好利用itertools
  • 这里是否有人对所有答案投了反对票?你最好给个理由
  • @Woody1193 谢谢更新
猜你喜欢
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
相关资源
最近更新 更多