相关疑难解决方法(0)

list.extend和list comprehension

当我需要在列表中添加几个相同的项目时,我使用list.extend:

a = ['a', 'b', 'c']
a.extend(['d']*3)
Run Code Online (Sandbox Code Playgroud)

结果

['a', 'b', 'c', 'd', 'd', 'd']
Run Code Online (Sandbox Code Playgroud)

但是,如何与列表理解类似?

a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
Run Code Online (Sandbox Code Playgroud)

结果

[['a', 'a'], ['b', 'b'], ['c']]
Run Code Online (Sandbox Code Playgroud)

但我需要这个

['a', 'a', 'b', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python list-comprehension list

26
推荐指数
4
解决办法
2万
查看次数

在一行迭代中扩展多个元素

对于

A=[1,2,3]

我想得到

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

我知道这是很容易获得['r1','r2','r3']通过

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

如上所示,我如何通过一个线路循环获得B?

非常感谢.

python iteration loops list

4
推荐指数
2
解决办法
87
查看次数

列表理解版"延伸"

以下是否存在1行等效(使用列表理解):

a = []
for i in range(6):
    a.extend(((-i,i,0,2),(-i-1,i,0,6)))
a = tuple(a)
Run Code Online (Sandbox Code Playgroud)

我在想类似的东西

tuple(((-i,i,0,2),(-i-1,i,0,6)) for i in range(6))
Run Code Online (Sandbox Code Playgroud)

但这给了:

(((0, 0, 0, 2), (-1, 0, 0, 6)),
 ((-1, 1, 0, 2), (-2, 1, 0, 6)),
 ((-2, 2, 0, 2), (-3, 2, 0, 6)),
 ((-3, 3, 0, 2), (-4, 3, 0, 6)),
 ((-4, 4, 0, 2), (-5, 4, 0, 6)),
 ((-5, 5, 0, 2), (-6, 5, 0, 6)))
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.

期望的输出

((0, 0, 0, 2),
 (-1, 0, 0, 6),
 (-1, 1, 0, …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

3
推荐指数
1
解决办法
271
查看次数

如何使用.extend list方法使用列表理解?

例如,这个片段:

out = []
for foo in foo_list:
    out.extend(get_bar_list(foo)) # get_bar_list return list with some data
return out
Run Code Online (Sandbox Code Playgroud)

如何使用列表理解来缩短此代码?

python list-comprehension

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

标签 统计

python ×4

list-comprehension ×3

list ×2

iteration ×1

loops ×1