2016-07-23 91 views
0

我有一个字符串列表,并希望得到一个包含在每个元素多次的新列表。列表理解:将每个字符串乘以一个列表

lst = ['abc', '123'] 
n = 3 

我可以做到这一点for循环:

res = [] 
for i in lst: 
    res = res + [i]*n 
print(res) 

['abc', 'abc', 'abc', '123', '123', '123'] 

如何与列表理解做呢?

我最好的尝试至今:

[ [i]*n for i in ['abc', '123'] ] 
[['abc', 'abc', 'abc'], ['123', '123', '123']] 

回答

6

使用nested list comprehension

>>> lst = ['abc', '123'] 
>>> n = 3 
>>> [i for i in lst for j in range(n)] 
['abc', 'abc', 'abc', '123', '123', '123'] 

背后的想法是这样的,你遍历列表两次,并在打印单元的每个三次。

What does "list comprehension" mean? How does it work and how can I use it?

+0

边评论:我明白这不会是一个嵌套列表?例如'[[1,2],[3,4]] ...... – Luis

+0

@Luis是的,要获取嵌套列表,您需要添加另一对括号。像这样的东西'[[我为i在范围(n)]为i']。休息一小时,并通过这些链接。他们是最好的文档之一,并会帮助你更好地理解列表。祝一切顺利。 –

1

它也可以做到:

>>> lst = ['abc', '123'] 
>>> n=3 
>>> [j for i in lst for j in (i,)*n] 
['abc', 'abc', 'abc', '123', '123', '123'] 
相关问题