อะไรคือวิธีที่ดีที่สุดทั้งในเชิงสุนทรียศาสตร์และจากมุมมองของประสิทธิภาพในการแบ่งรายการออกเป็นหลายรายการตามเงื่อนไข เทียบเท่ากับ:
good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]
มีวิธีที่สง่างามกว่านี้อีกไหม?
อัปเดต: นี่คือกรณีการใช้งานจริงเพื่ออธิบายสิ่งที่ฉันพยายามทำดีกว่า:
# files looks like: [ ('file1.jpg', 33L, '.jpg'), ('file2.avi', 999L, '.avi'), ... ]
IMAGE_TYPES = ('.jpg','.jpeg','.gif','.bmp','.png')
images = [f for f in files if f[2].lower() in IMAGE_TYPES]
anims = [f for f in files if f[2].lower() not in IMAGE_TYPES]
str.split()
เพื่อแยกรายการออกเป็นชุดสะสมที่เรียงลำดับแล้วของรายการย่อยต่อเนื่อง เช่นsplit([1,2,3,4,5,3,6], 3) -> ([1,2],[4,5],[6])
ตรงข้ามกับการแบ่งองค์ประกอบของรายการตามหมวดหมู่
IMAGE_TYPES = set('.jpg','.jpeg','.gif','.bmp','.png')
ที่: n (1) แทนที่จะเป็น n (o / 2) โดยที่จริงแล้วไม่มีความแตกต่างในการอ่าน