【问题标题】:List comprehension: Multiply each string to a single list列表理解:将每个字符串乘以单个列表
【发布时间】:2016-07-23 16:01:25
【问题描述】:

我有一个字符串列表,并希望多次获得一个包含每个元素的新列表。

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']]

【问题讨论】:

    标签: python list python-3.x list-comprehension


    【解决方案1】:

    使用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?

    【讨论】:

    • 旁注:我知道这不会是一个嵌套列表?例如[[1,2],[3,4]]...
    • @Luis 是的,要获得嵌套列表,您需要添加另一对括号。像这样[[i for j in range(n)] for i in lst]。休息一小时并浏览这些链接。它们是最好的文档之一,将帮助您更好地理解列表组合。一切顺利。
    【解决方案2】:

    也可以这样写:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多