Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การต่อ String Tuple สองตัวใน Python

Concatenation ของ String Tuple สองตัว

เมื่อต้องการต่อ (Concatenate) String Tuple สองตัวแบบ Element-wise สามารถใช้ zip() และ Generator Expression ได้

ตัวอย่างโค้ด

my_tuple_1 = ('Jane', 'Pink', 'El')
my_tuple_2 = ('Will', 'Mark', 'Paul')

print("The first tuple is : ")
print(my_tuple_1)
print("The second tuple is : ")
print(my_tuple_2)

# zip จับคู่ แล้วต่อ String (+)
my_result = tuple(elem_1 + elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))

print("The concatenated tuple is : ")
print(my_result)

ผลลัพธ์

The first tuple is : ('Jane', 'Pink', 'El')
The second tuple is : ('Will', 'Mark', 'Paul')
The concatenated tuple is : ('JaneWill', 'PinkMark', 'ElPaul')

คำอธิบาย

  • กำหนด Tuple 2 ตัวที่เก็บ String และแสดงผล
  • ใช้ zip() จับคู่ Element ที่ Index ตรงกัน
  • Generator Expression ต่อ String ด้วย + (elem_1 + elem_2)
  • แปลงเป็น Tuple ด้วย tuple()
  • เก็บผลลัพธ์และแสดง

การทำงานแบบละเอียด

IndexTuple 1Tuple 2Concatenated
0'Jane''Will''JaneWill'
1'Pink''Mark''PinkMark'
2'El''Paul''ElPaul'

เพิ่ม Separator ระหว่าง String

# ใส่ Space
result = tuple(elem_1 + ' ' + elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))
print(result)  # ('Jane Will', 'Pink Mark', 'El Paul')

# ใส่ Hyphen
result = tuple(elem_1 + '-' + elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))
print(result)  # ('Jane-Will', 'Pink-Mark', 'El-Paul')

# ใช้ f-string
result = tuple(f"{a}_{b}" for a, b in zip(my_tuple_1, my_tuple_2))
print(result)  # ('Jane_Will', 'Pink_Mark', 'El_Paul')

กรณี Tuple ความยาวไม่เท่ากัน

t1 = ('a', 'b', 'c', 'd')
t2 = ('1', '2')
result = tuple(a + b for a, b in zip(t1, t2))
print(result)  # ('a1', 'b2') - zip หยุดที่สั้นกว่า

# ใช้ itertools.zip_longest ถ้าต้องการเติมค่า Default
from itertools import zip_longest
result = tuple((a or '') + (b or '') for a, b in zip_longest(t1, t2, fillvalue=''))
print(result)  # ('a1', 'b2', 'c', 'd')

ใช้ Map + Operator (Alternative)

from operator import add
result = tuple(map(add, my_tuple_1, my_tuple_2))
print(result)  # ('JaneWill', 'PinkMark', 'ElPaul')