ฟังก์ชั่นแผนที่กลับรายการมีข้อได้เปรียบของการบันทึกการพิมพ์โดยเฉพาะในช่วงการโต้ตอบ คุณสามารถกำหนดlmapฟังก์ชั่น (ในการเปรียบเทียบของ python2 imap) ที่ส่งคืนรายการ:
lmap = lambda func, *iterable: list(map(func, *iterable))
แล้วโทรlmapแทนmapจะทำงาน:
lmap(str, x)สั้นโดย 5 ตัวอักษร (30% ในกรณีนี้) กว่าและแน่นอนสั้นกว่าlist(map(str, x)) [str(v) for v in x]คุณสามารถสร้างฟังก์ชั่นที่คล้ายกันได้filterเช่นกัน
มีความคิดเห็นต่อคำถามเดิม:
ฉันขอแนะนำให้เปลี่ยนชื่อเป็นรับ map () เพื่อส่งคืนรายการใน Python 3 * เนื่องจากใช้กับ Python3 ทุกรุ่น มีวิธีทำเช่นนี้หรือไม่? - meawoppl 24 มกราคมเวลา 17:58 น
มันเป็นไปได้ที่จะทำอย่างนั้น แต่มันก็เป็นความคิดที่ดีมาก เพื่อความสนุกนี่คือวิธีที่คุณจะทำได้ ( แต่ไม่ควร ):
__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator
map()ถูกเกือบจะถูกลบออกจากภาษาที่เพราะมีเหตุผลที่จะใช้มันมากกว่าความเข้าใจรายการหรือไม่มีforห่วง