Đây là một câu hỏi mẹo để chơi golf trong python .
Giả sử bạn có hai danh sách các chuỗi và bạn muốn nối các mục tương ứng từ mỗi danh sách. Ví dụ với a=list("abcd")
và b=list("1234")
, tính toán ["a1","b2","c3","d4"]
.
Điều này là tầm thường trong các ngôn ngữ lập trình dựa trên mảng, trong đó các hoạt động thường áp dụng theo từng thành viên cho các danh sách. Ví dụ, trong ngôn ngữ chơi gôn Pip của tôi , mã đơn giản a.b
. Nhưng trong Python, nó không dễ dàng như vậy.
Cách Pythonic có lẽ là sử dụng zip
và hiểu danh sách (25 ký tự):
[x+y for x,y in zip(a,b)]
Một phương pháp khác là map
với hàm lambda (23):
map(lambda x,y:x+y,a,b)
Sau đây là đoạn ngắn nhất tôi nghĩ ra (21):
map("".join,zip(a,b))
Có phương pháp nào ngắn hơn không?
Giả sử rằng các danh sách có cùng độ dài và một số loại lặp là tất cả những gì cần thiết (vì vậy một map
đối tượng là tốt trong Python 3).