【发布时间】:2021-03-27 19:12:55
【问题描述】:
根据我的理解,两者的 X 打印不应该相同吗?我需要的答案是来自列表理解的答案,这是一个新列表,其中每个元素都是原始列表中的 -1。但是for循环只给出1个元素,我也不知道该元素是如何计算的。打印 x 只给出列表的最后一个元素。我确定我做错了什么,但我不确定如何仅使用 for 循环来获取列表。令我困惑的是,如果 print(x) 是 for 循环的一部分,它将打印我需要的所需列表的元素,但不在列表中,这意味着我编写的数学按预期工作,对吗?
list= [1,2,3,4,5]
#loop
x=[]
for i in list:
x=[i-1]
print(x)
#list comprehension
x=[i-1 for i in list]
print(x)
#confusing part where this print will be the same as the comprehension but not in a list form
x=[]
for i in list:
x=[i-1]
print(x)
【问题讨论】:
-
我认为您的意思是在循环中执行
x += [i-1]而不是x = [i-1]。另请注意,将列表命名为list是不好的,因为它会影响list函数,并且会在某些时候导致非常混乱的错误。 -
请注意,最好不要将集合命名为与内置函数相同的名称(
list、set、..),因为它是 clobbers 该范围内的内置函数! -
我会牢记这一点,我想通过将其命名为“列表”来澄清这一点,但这里的每个人都知道我应该知道这个问题
-
@Oak 实践建议:在业务代码中,您将在范围内的内容或目的/角色之后命名列表。虽然大多数教育代码都非常抽象命名,但您现在就可以开始了。训练您的命名技巧,应用约定和(最佳)实践以使您的代码易于阅读——例如重命名为
numbers(带有复数“s”的集合名称)或num_list(混合名称形式,参见匈牙利符号)????
标签: python for-loop list-comprehension