【发布时间】:2020-05-18 09:18:04
【问题描述】:
所以我一直在学习 Python 中的列表推导,但不了解嵌套的逻辑 列表推导在 python 中工作。考虑以下 sn-ps 代码:
####TRADITIONAL EXAMPLE-1###
L = []
for i in range(5):
for j in range(4):
L.append(j)
#output of l-> [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
####TRADITIONAL EXAMPLE-2###
K = []
for i in range(5):
for j in range(4):
K.append(i)
#output of k -> [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]
好的,这一切都说得通,但是当我想使用列表推导重新创建这些时,逻辑对我来说没有意义。现在考虑这些例子:
###LIST COMPREHENSION EXAMPLE-3####
L1 = [j for j in range(4) for i in range(5)]
#Output of L1 -> [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]
###LIST COMPREHENSION EXAMPLE-4####
K1 = [i for j in range(4) for i in range(5)]
#Output of K1 -> [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
###LIST COMPREHENSION EXAMPLE-5####
Q = [[j for j in range(4)] for i in range(5)]
#Output of Q -> [[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]
###LIST COMPREHENSION EXAMPLE-6####
Q1 = [[i for j in range(4)] for i in range(5)]
#output of Q1 -> [[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]
所以我不知道为什么,但我希望输出 L 和 L1(示例 1 和 3)无论使用传统方式还是列表理解方式都是相同的,并且 K 和 K1 也是如此(示例 2 和4) 特别是当我比较 Q 和 Q1 的输出时(例如 5 和 6)。就像比较 Q1 和 K1(示例 4 和 6)一样,它们几乎遵循相同的语法,但输出却大不相同。
我希望我能够根据这些列表理解中的每一个与传统方式相比的输出来澄清我在这里的困惑。 我尝试在线搜索并遵循教程,但它们只是陈述示例,而不是解释其背后的工作或逻辑。我只是不想在不知道输出为何如此的原因的情况下搞砸输出。 感谢您的帮助:)
【问题讨论】:
标签: python python-3.x list list-comprehension ranged-loops