2016-07-23 88 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'] 
相關問題