ผู้ตอบคนอื่นตอบถูกว่าคุณได้ค้นพบนิพจน์ตัวสร้าง (ซึ่งมีสัญกรณ์คล้ายกับรายการความเข้าใจ แต่ไม่มีวงเล็บเหลี่ยมล้อมรอบ)
โดยทั่วไป Genexps (ตามที่รู้จักกันในชื่อ) มีประสิทธิภาพในการจำมากกว่าและเร็วกว่าการเข้าใจรายการ
อย่างไรก็ตามในกรณีของ''.join()
ความเข้าใจในรายการนั้นทั้งเร็วกว่าและมีประสิทธิภาพในการจำมากกว่า เหตุผลก็คือการเข้าร่วมจำเป็นต้องทำการส่งผ่านข้อมูลสองครั้งดังนั้นจึงจำเป็นต้องมีรายการจริง ถ้าคุณให้มันก็สามารถเริ่มงานได้ทันที หากคุณให้ genexp แทนจะไม่สามารถเริ่มทำงานได้จนกว่าจะสร้างรายการใหม่ในหน่วยความจำโดยเรียกใช้ genexp เพื่อทำให้หมดแรง:
~ $ python -m timeit '"".join(str(n) for n in xrange(1000))'
1000 loops, best of 3: 335 usec per loop
~ $ python -m timeit '"".join([str(n) for n in xrange(1000)])'
1000 loops, best of 3: 288 usec per loop
ผลลัพธ์เดียวกันเมื่อเปรียบเทียบitertools.imapกับmap :
~ $ python -m timeit -s'from itertools import imap' '"".join(imap(str, xrange(1000)))'
1000 loops, best of 3: 220 usec per loop
~ $ python -m timeit '"".join(map(str, xrange(1000)))'
1000 loops, best of 3: 212 usec per loop
join
น่าจะเขียนด้วย C ดังนั้นจึงทำงานได้เร็วกว่าความเข้าใจในรายการมาก ... เวลาทดสอบ!