เชื่อมต่อรายการของสตริง item-wise ใน Python


13

นี่คือคำถามสำหรับการเล่นกอล์ฟในหลาม

สมมติว่าคุณมีสองรายการของสตริงและคุณต้องการเชื่อมต่อรายการที่เกี่ยวข้องจากแต่ละรายการ เช่นกับa=list("abcd")และการคำนวณb=list("1234")["a1","b2","c3","d4"]

นี่เป็นเรื่องเล็กน้อยในภาษาการเขียนโปรแกรมแบบอาเรย์ ยกตัวอย่างเช่นในภาษาของการเล่นกอล์ฟของฉันPipa.bรหัสเป็นเพียง แต่ใน Python มันไม่ง่ายเลย

อาจใช้วิธี Pythonic zipและรายการเข้าใจ (25 ตัวอักษร):

[x+y for x,y in zip(a,b)]

อีกวิธีคือmapฟังก์ชั่นแลมบ์ดา (23):

map(lambda x,y:x+y,a,b)

ต่อไปนี้เป็นคำย่อที่ฉันพบ (21):

map("".join,zip(a,b))

มีวิธีการที่สั้นกว่านี้ไหม?

สมมติว่ารายการนั้นมีความยาวเท่ากันและสามารถทำซ้ำได้บางอย่างเป็นสิ่งที่จำเป็น (ดังนั้นmapวัตถุจึงใช้ได้ใน Python 3)



@Mast รายการคำแนะนำมีคำตอบที่ตอบคำถามนี้หรือไม่?
Martin Ender

@ MartinBüttnerหากไม่เป็นเช่นนั้นก็ควร ป้องกันความยุ่งเหยิงและรักษาความลับทั้งหมดเอาไว้
Mast

คำตอบ:


14

20 ตัวอักษร

map(str.__add__,a,b)

ใช้ในการสร้างวิธีการวิธีสตริงนอกจากนี้__add__ที่ถูกเรียกโดยในสายในสถานที่ของฟังก์ชั่นที่ไม่ระบุชื่อของคุณ+lambda x,y:x+y


คุณรู้ฉันคิดstr.__add__แต่ด้วยเหตุผลบางอย่างไม่ได้ตรวจสอบเพื่อดูว่ามันสั้นกว่า
DLosc

1
@DLosc ประโยชน์ที่แท้จริงของคำตอบนี้คือการใช้mapกับ iterables หลายตัวซึ่งจะทำการซิปโดยอัตโนมัติ ไม่ว่ามันจะไม่สั้นลง โปรดทราบว่าถ้าในรหัสของคุณคุณจะต้องเข้าถึงบางส่วนของ__*__วิธีการที่มันอาจจะสั้นกว่าที่จะทำและการใช้งานแล้วfrom operator import * map(add,a,b)
Bakuriu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.