ฟังก์ชัน zip python - พฤติกรรมแปลก ๆ [ซ้ำกัน]
Nov 10 2020
มีคำอธิบายเกี่ยวกับสิ่งที่เกิดขึ้นด้านล่างนี้หรือไม่?
>>> foo = [10, 20]
>>> bar = [30, 40]
>>> foobar = zip(foo, bar)
>>> list(foobar)
[(10, 30), (20, 40)]
>>> tuple(foobar)
()
>>> list(foobar)
[]
>>> foobar
<zip object at 0x000001198D28E280>
แม้ว่าfoobarจะยังคงเป็นอ็อบเจกต์ zip แต่ทำไมเอาต์พุตเหล่านี้?
คำตอบ
DragonBobZ Nov 10 2020 at 00:57
zipเป็นตัวสร้างและส่งคืนตัววนซ้ำ เมื่อเสร็จแล้วก็ให้ผลเป็นอย่างนั้น
def mygen():
count = 10
while count:
yield count
count -= 1
gen_obj = mygen()
print(list(gen_obj))
print(list(gen_obj))
# [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# []