列表理解:将每个字符串乘以一个列表
问题描述:
我有一个字符串列表,并希望得到一个包含在每个元素多次的新列表。列表理解:将每个字符串乘以一个列表
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']]
答
>>> 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?
答
它也可以做到:
>>> lst = ['abc', '123']
>>> n=3
>>> [j for i in lst for j in (i,)*n]
['abc', 'abc', 'abc', '123', '123', '123']
边评论:我明白这不会是一个嵌套列表?例如'[[1,2],[3,4]] ...... – Luis
@Luis是的,要获取嵌套列表,您需要添加另一对括号。像这样的东西'[[我为i在范围(n)]为i']。休息一小时,并通过这些链接。他们是最好的文档之一,并会帮助你更好地理解列表。祝一切顺利。 –