【发布时间】:2020-06-18 13:09:13
【问题描述】:
我对 python 很陌生,所以希望这将是一个简单的问题。我有一个包含一堆数字的列表,如果该数字高于某个其他数字,我想从其中减去一个。例如,我有以下列表缺少 4 个:
a = [1, 2, 3, 5, 6, 7, 8, 9]
如何将大于 4 的每个数字减一?我尝试了一个 for 循环:
for x in a:
if x > 4:
x-=1
print(a)
但这不会改变列表中的任何内容。 我也尝试过列表推导,但我对它们很陌生,所以我无法让它工作并出现错误:
a = [[x - 1 if x > 4] for x in a]
a = [[x - 1 for x in a] if x > 4]
我该怎么做才能将超过 4 的每个数字减一并使该列表从 1 计数到 8?
【问题讨论】:
-
你可以试试
a = [x - 1 if (x > 4) else x for x in a] -
@DOOM 很遗憾,这给了我一个 SytaxError
-
与
[x - 1 if (x > 4) else x for x in a] = [1, 2, 3, 4, 5, 6, 7, 8]?? -
@DOOM 在我的机器上运行良好
-
for 循环不起作用,因为
x没有保留任何与列表中原始值的链接;那时它只是一个独立变量,分配给x不会影响其他任何东西。
标签: python list loops list-comprehension