我正在尝试将大于3的数字乘以2,并从其他所有数据中减去1。但是,列表没有任何反应。 这是我的代码:
lst = [1,2,3,4,5,6,7,8,9,10]
print (lst)
[x*2 if x > 3 else x-1 for x in lst]
print (lst)
为什么列表推导不会修改 lst 变量的内容?
答案 0 :(得分:0)
您没有将其重新分配给变量名称。
lst = [1,2,3,4,5,6,7,8,9,10]
print (lst)
lst = [x*2 if x > 3 else x-1 for x in lst]
print (lst)
答案 1 :(得分:0)
您错过了作业。像您这样的List comprehensions不会对列表元素进行就地修改。相反,表达式返回一个新列表,因此您必须将列表推导表达式的结果分配回变量。例如:
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list = [x*2 if x > 3 else x-1 for x in list]
print(list)
在Ruby中,肯定有执行自变异操作的方法,但我个人并不知道Python等价物会保留您在此处尝试使用的语义。