ฟังก์ชั่นแผนที่กลับรายการมีข้อได้เปรียบของการบันทึกการพิมพ์โดยเฉพาะในช่วงการโต้ตอบ คุณสามารถกำหนด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
ห่วง