การแบ่งส่วนเฉพาะจากรายการ
Nov 14 2020
ฉันมีรายการเดียวและฉันต้องการพิมพ์องค์ประกอบทั้งหมดของมัน แต่ข้ามไปหนึ่งรายการ
a = [1,2,3,4,5,6,7,8,9]
ฉันต้องการพิมพ์:
1,3,4,5,6,7,8,9
(ในคอลัมน์เหมือน for-loop ทั่วไป)
เป็นไปได้หรือไม่
คำตอบ
2 MarianD Nov 14 2020 at 13:35
หากคุณระบุองค์ประกอบที่จะข้ามโดยตำแหน่ง (ดัชนี):
for position, element in enumerate(a): if position != specified_position: print(element)หากคุณระบุองค์ประกอบที่จะข้ามด้วยค่าของมัน:
for element in a: if element != specified_value: print(element)
1 Aplet123 Nov 14 2020 at 13:16
เพียงแค่ฝานทั้งสองด้านแล้วเรียงต่อกัน:
def skip_over(lst, i):
return lst[:i] + lst[i + 1:]
skip_over([1, 2, 3, 4, 5], 1) # [1, 3, 4, 5]
หากคุณต้องการข้ามค่าที่เกิดขึ้นทั้งหมดให้กรองด้วยความเข้าใจรายการ:
def skip_all(lst, v):
return [x for x in lst if x != v]
skip_all([1, 2, 3, 2, 4, 5], 2) # [1, 3, 4, 5]
หากคุณต้องการข้ามค่าที่เกิดขึ้นครั้งแรกให้ใช้indexเพื่อรับดัชนี:
def skip_first(lst, v):
try:
i = lst.index(v)
except ValueError:
# value not in list so return whole thing
return lst
return lst[:i] + lst[i + 1:]
skip_first([1, 2, 3, 2, 4, 5], 2) # [1, 3, 2, 4, 5]