这就是我想做的:
if a > 126:
a - 94
'a' 是一个长列表(约 100 个数字),全部为数字。我想选择 126 以上的数字并从中减去 94 但保持它们的顺序相同。有办法做到这一点吗?
请您参考如下方法:
使用列表推导式构建新列表:
a = [v - 94 if v > 126 else v for v in a]
如果 v > 126 为真,则条件表达式为新值生成 v - 94,否则它包含未更改的原始值。
使用较短的列表以保持可读性的演示:
>>> import random
>>> a = [random.randint(80, 150) for _ in range(10)]
>>> a
[131, 133, 119, 130, 136, 129, 120, 82, 100, 126]
>>> [v - 94 if v > 126 else v for v in a]
[37, 39, 119, 36, 42, 35, 120, 82, 100, 126]
如果您打算过滤掉任何 126 或更低的值,您仍然可以使用列表理解:
[v - 94 for v in a if v > 126]
这会选择所有超过 126 的值,并生成一个新的列表对象,其中只有这些值减去 94。然后这会生成一个更短的列表:
>>> [v - 94 for v in a if v > 126]
[37, 39, 36, 42, 35]
