检查列表所有值是否小于某个数字,若否则设置为该数字
我在Python里有一个列表,我想确保这个列表里的所有值都大于某个特定的值。如果有值不满足这个条件,我就想把它们设置为那个特定的值。
比如说,假设这个列表是
a = [1,2,3,4]
而我想比较的值是3。那么我希望这个列表变成
a = [3,3,3,4]
我可以通过逐个检查列表里的每个元素来实现这个目标。有没有更好的方法呢?
1 个回答
4
你可以用一个简单的条件表达式和列表推导式来重建这个列表,像这样:
a = [1, 2, 3, 4]
print [item if item > 3 else 3 for item in a]
# [3, 3, 3, 4]
对于列表中的每一个item
,它会检查这个item
是否大于3
,如果是,就直接用这个item
,如果不是,就用3
。
这个方法和下面的做法类似,但效率更高:
result = []
for item in a:
if item > 3:
result.append(item)
else:
result.append(3)
不过要记住,列表推导式会创建一个新的列表。所以,你可能还需要做:
a = [item if item > 3 else 3 for item in a]