作為防御性編程的一種手段,我實現了一段相當簡單的代碼來檢查傳遞給我的函數的給定列表的所有元素(不同類型)是否可以通過比較運算符(有一個或所有實施的豐富比較方法)。我對此的看法是迭代列表并編目可用類型以及字典中每個對象的單個實例,然后運行字典的鍵,將每個選定的對象相互比較以查看它們是否返回布爾值或引發TypeError.下面是我的想法的實現:test = [1, 2, 'str', 4.5, {'r':'d'}]type_dict = {}for elem in test: if not isinstance(elem, tuple(type_dict.keys())): type_dict[type(elem)] = elemcmp = Truefor obj1 in type_dict.keys(): for obj2 in type_dict.keys(): try: type_dict.get(obj1) > type_dict.get(obj2) except TypeError: cmp = False break if not cmp: breakif cmp: print('Objects in list are comparable.')else: print('Objects in list are not comparable.')只是出于好奇,是否有一種更簡潔的方法可以通過 python 內置或庫來執行此操作?
2 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
您所要做的就是嘗試對列表進行排序。
try:
sorted(list_of_elements)
print('Objects in list are comparable.')
except TypeError:
print('Objects in list are not comparable.')

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
我不確定我是否正確理解你的問題,但我認為你可以做一些相當簡單的事情,例如:
def check_type(test) :
for i in test :
if type(test[i])!=type(test[0]) :
return False
return True
添加回答
舉報
0/150
提交
取消