คุณสามารถใช้ตัวดำเนินการ AND แบบบิต&
ได้ ลองดูด้านล่าง:
x = [1, 2, 3, 4, 5, 6, 7]
y = [i for i in x if i&1]
>>>
[1, 3, 5, 7]
ตัวดำเนินการ Bitwise AND ใช้กับ 1 และเหตุผลที่ใช้งานได้เนื่องจากเลขคี่เมื่อเขียนด้วยเลขฐานสองจะต้องมีหลักแรกเป็น 1 มาตรวจสอบกัน
23 = 1 * (2**4) + 0 * (2**3) + 1 * (2**2) + 1 * (2**1) + 1 * (2**0) = 10111
14 = 1 * (2**3) + 1 * (2**2) + 1 * (2**1) + 0 * (2**0) = 1110
และการดำเนินการกับ 1 จะส่งกลับเพียง 1 เท่านั้น (1 ในไบนารีจะมีเลขหลักสุดท้าย 1 ด้วย) หากค่าเป็นเลขคี่
ตรวจสอบหน้า Python Bitwise Operatorสำหรับข้อมูลเพิ่มเติม
PS: คุณสามารถใช้วิธีนี้ในเชิงกลยุทธ์ได้หากคุณต้องการเลือกคอลัมน์คี่และคู่ในดาต้าเฟรม สมมติว่าพิกัด x และ y ของจุดสำคัญบนใบหน้าจะได้รับเป็นคอลัมน์ x1, y1, x2 ฯลฯ ... ในการปรับพิกัด x และ y ให้เป็นปกติด้วยค่าความกว้างและความสูงของแต่ละภาพคุณสามารถทำได้
for i in range(df.shape[1]):
if i&1:
df.iloc[:, i] /= heights
else:
df.iloc[:, i] /= widths
สิ่งนี้ไม่เกี่ยวข้องกับคำถาม แต่สำหรับนักวิทยาศาสตร์ข้อมูลและวิศวกรวิสัยทัศน์คอมพิวเตอร์วิธีนี้อาจเป็นประโยชน์
ไชโย!