如果列表是:
list = ["3" ,"5" ,"dog" , "1"]
,我想在列表中添加最大值和最小值,你怎么做呢?我想我应该做一个循环,比较每个数字作为迭代,但正如你所看到的,列表中有一个字符串。
如何比较整数来找到最大值和最小值而不会因为字符串而出错?
试试这个:
test_list = ["3" ,"5" ,"dog" , "1"]
max([x for x in test_list if x.isnumeric()])
# 5
Max内部的列表推导式基本上只过滤数字元素。
编辑:
如果你需要捕捉小数和负数:
original_list = ["3" ,"-5." ,"dog" , "-1"]
numerics_only_list = [x for x in a if x.lstrip('-').replace('.', '', 1).isnumeric()]
max(numerics_only_list)
# 5.
min(b)
# -1
基本上,我删除了最左边的-
符号和只有1个小数点。
您可以按照计划进行循环。你只需要捕捉项目没有int值的异常:
list = ["3", "5", "dog", "1"]
cleaned =[]
for item in list:
try:
if int(item):
cleaned.append(int(item))
except(Exception):
pass
result = max(cleaned) + min(cleaned)
print(result)
#prints 6
不确定这是否有帮助,但你试过这样做吗?
list = ["3" ,"5" ,"dog" , "1"]
mininum_number = min(list)
print(mininum_number)
maximum_number = max(list)
print(maximum_number)
min()函数将找到最小值不幸的是,max()函数将选择狗,但它没有给我一个错误
可以使用列表推导式要过滤数字项,则很容易找到最大值和最小值:
test_list = ["3" ,"5" ,"dog" , "1"]
nums = [item for item in test_list if item.isnumeric()]
print(max(nums))
# 5
print(min(nums))
# 1