在Python中工作時,如何使用for循環和if語句編寫代碼以從未知整數列表中刪除底片?從Python中未知列表中刪除底片
def mod_lis (list):
for i in range(len(list)):
if list[i] < 0:
del list[i]
return list
在Python中工作時,如何使用for循環和if語句編寫代碼以從未知整數列表中刪除底片?從Python中未知列表中刪除底片
def mod_lis (list):
for i in range(len(list)):
if list[i] < 0:
del list[i]
return list
你的代碼的問題是你在for循環中修改你的列表。其結果是,您以這種方式跳過元素,並在您的列表縮短後立即得到IndexError。
你可以用這個列表理解這樣做:
mylist = [val for val in mylist if val>=0]
您可以使用filter()
和lambda
功能:
my_list = filter(lambda x : x >= 0, mylist)
這是更好地使列表的副本沒有選定的項目,但如果你必須修改到位,試試這個:
def remove_negatives(list):
pos = 0
for item in list:
if item >= 0:
list[pos] = item
pos += 1
del list[pos:]
輕微,但是這是一個列表compre不是一個生成器表達式。 – DSM
當然,謝謝指出。固定。 – SzieberthAdam