การแบ่งส่วนเฉพาะจากรายการ

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
  1. หากคุณระบุองค์ประกอบที่จะข้ามโดยตำแหน่ง (ดัชนี):

    for position, element in enumerate(a):
        if position != specified_position:
            print(element)
    
  2. หากคุณระบุองค์ประกอบที่จะข้ามด้วยค่าของมัน:

    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]