首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表理解技巧

Python列表理解技巧
EN

Stack Overflow用户
提问于 2015-07-28 17:07:50
回答 5查看 1.1K关注 0票数 4

这也许是个愚蠢的问题但是..。

代码语言:javascript
复制
list = []
for i in range(1, 5):
    for j in range(i):
        list.append(i)
print(list)

list2 = [[i]*i for i in range(1, 5)]
print(list2)

使用下面的代码,我的输出如下

代码语言:javascript
复制
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

我明白为什么第二张是这样的,但是有什么窍门能让我理解第一张清单吗?

P.S.

Python 3

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-07-28 17:09:37

这是你想要的吗?

代码语言:javascript
复制
>>> list2 = [i for i in range(1, 5) for j in range(i)]
>>> list2
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]

诀窍是在列表理解中按相同的顺序放置类似的for循环(由于不需要列表列表,所以不要创建这些列表)。

票数 9
EN

Stack Overflow用户

发布于 2015-07-28 17:09:31

[i for i in range(5) for j in range(i)]应该能做到这一点。您可以在列表理解中使用多个for

票数 3
EN

Stack Overflow用户

发布于 2015-07-28 17:15:20

虽然我更喜欢双for,但您也可以使用reduce使用list2

代码语言:javascript
复制
list1 = reduce(lambda x, y: x + y, [[i] * i for i in range(1, 5)])
print list1
# [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31682890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档