有兩個答案
看你喜歡那一種
my_list = [(100, 20), (''), (140, 350, 60)]
def lsttupleL(my_list):
return my_list
print(lsttupleL(my_list))
def lsttuple(lst):
ret = list(filter(lambda x: type(x) is tuple , lst))
return ret
print(lsttuple(my_list))
這個問題我覺得要注意一件事情,就是函數的 output 要不要只包含 tuple。這個要求會導致函數有兩種寫法
def get_nonempty_tuple(my_list: list) -> List[tuple]:
return [
a_tuple for a_tuple in my_list if isinstance(a_tuple, tuple) and a_tuple
]
def filter_empty_tuple(my_list: list) -> list:
for a_tuple in my_list:
if isinstance(a_tuple, tuple):
if not a_tuple:
my_list.remove(a_tuple)
return my_list
會特別討論得原因是,因為在 Python 裡面,()
這個符號除了當作 tuple 之外,也會被當作運算中的括號,代表先乘除,或者把裡面的運算結果視為一個物件。所以在 Python 裡面寫 (1)
,這個物件不會被當作 tuple,而是數字 1。如果想要定義一個 tuple 但是裡面只有 1 這個元素,需要這樣寫 (1, )
以上僅個人淺見,如果不足再請網路上大大補充