Python 如何执行此列表理解代码?
我试图理解这段代码,但到目前为止,我无法得出任何逻辑。我已经执行了它以获得输出,但仍然无法理解。代码如下:Python 如何执行此列表理解代码?,python,Python,我试图理解这段代码,但到目前为止,我无法得出任何逻辑。我已经执行了它以获得输出,但仍然无法理解。代码如下: lst = [[c for c in range(r)] for r in range(3)] for x in lst: for y in x: if y < 2: print('*', end='') lst=[[c代表范围(r)中的c]代表范围(3)中的r] 对于lst中的x: 对于x中的y: 如果y
lst = [[c for c in range(r)] for r in range(3)]
for x in lst:
for y in x:
if y < 2:
print('*', end='')
lst=[[c代表范围(r)中的c]代表范围(3)中的r]
对于lst中的x:
对于x中的y:
如果y<2:
打印('*',结束='')
我从右到左执行它,也就是说,从右边的循环开始“对于范围(3)中的r”。首先,r将是“0”,然后将其分配给左侧循环“c代表范围(r)中的c”。在这一点之后,我不知道它将如何进一步执行
如果有人能解释,那就太好了。
谢谢/
范围(3)内r的外循环[…]将列出范围(3)内c的内循环[c]的结果,的r
依次为0、1和2(范围(3)的结果的结果)
因此,内部循环[c代表范围(r)中的c]
将给出范围(r)
的每个元素的列表,该列表应给出[]
,[0]
和[0,1]
。所以,最终结果是[[],[0],[0,1]]
请注意,这相当于以下内容:
lst = []
for r in range(3):
lst.append([]) # since list comprehension in list comprehension
for c in range(r):
lst[-1].append(c) # -1 index is the last index in python
lst中x的:
对于x中的y:
如果y<2:
打印('*',结束='')
对于lst
中的每个列表,对于该列表中的每个元素,如果小于2,则打印*
。换句话说,“对于列表中的每个元素”已经发布了很好的答案。没什么可补充的。我要补充的是print()是您在编程方面最好的朋友之一。如果有任何疑问,打印可能会提供一些清晰度
例如,对于更改值(如@sshashank124所建议的)和执行打印,可以让您看到lst是什么。一旦知道lst是什么,您就可以了解发生了什么以及下游代码
lst=[[c代表范围(r)中的c]代表范围(3)中的r]
打印(lst)
lst=[[c代表范围(r)内的c]代表范围(4)内的r]
打印(lst)
lst=[[c代表范围(r)内的c]代表范围(5)内的r]
打印(lst)
lst=[[c代表范围(r)内的c]代表范围(6)内的r]
打印(lst)
这为值3、4、5和6提供了四个输出。。你可以看到图案
[[],[0],[0,1]]
[[], [0], [0, 1], [0, 1, 2]]
[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
希望这能给您带来一些额外的价值,否则我很抱歉。用6
而不是3
来尝试它,以查看模式:@sshashank124谢谢。这很有帮助。现在就清除:)!!尝试使用6可以让它更清晰。非常感谢您增加了清晰性。这很有帮助,代码现在很清楚:)。
lst = []
for r in range(3):
lst.append([]) # since list comprehension in list comprehension
for c in range(r):
lst[-1].append(c) # -1 index is the last index in python
for x in lst:
for y in x:
if y < 2:
print('*', end='')