วิธีผนวกหลายค่าเข้ากับรายการใน Python


176

ฉันพยายามหาวิธีผนวกหลายค่ากับรายการใน Python ฉันรู้ว่ามีไม่กี่วิธีที่จะทำเช่นการป้อนข้อมูลด้วยตนเองค่าหรือ Pur การดำเนินการผนวกในforวงหรือappendและextendฟังก์ชั่น

อย่างไรก็ตามฉันสงสัยว่ามีวิธีที่ประณีตกว่านี้หรือไม่? อาจเป็นแพคเกจหรือฟังก์ชั่นบางอย่าง?


8
คุณพบเอกสารรายการแล้วหรือยัง?
Martijn Pieters

5
คุณบอกว่าคุณรู้ว่ามีสองสามวิธีที่จะทำเช่นนั้นแต่อย่าแสดงสิ่งที่คุณพยายามหรืออธิบายว่าทำไมวิธีการที่คุณเข้าใจไม่ดีพอ
ไร้ประโยชน์

กรุณากำหนดเรียบร้อยมากกว่า extend()
Frédéric Hamidi

3
@ FrédéricHamidi more neat == additional package dependencyแน่นอน!
hexparrot

1
คำถามนี้จะพิจารณาได้อย่างไรนอกหัวข้อ?
Victor Schröder

คำตอบ:


353

คุณสามารถใช้วิธีการเรียงลำดับlist.extendเพื่อขยายรายการด้วยค่าหลายค่าจากการทำซ้ำชนิดใด ๆ ไม่ว่าจะเป็นรายการอื่นหรือสิ่งอื่นใดที่ให้ลำดับของค่า

>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

ดังนั้นคุณสามารถใช้list.append()เพื่อผนวกค่าเดียวและlist.extend()ผนวกหลายค่า


1
ซับซ้อนเล็กน้อยที่จะแนะนำเครื่องกำเนิดไฟฟ้าให้กับใครบางคนในวันที่ 1 ของการใช้ Python
Daniel Roseman

1
@DanielRoseman จุดของฉันคือค่าที่สามารถมาจากลำดับใด ๆ iterable
โผล่

6
append()หมายเหตุที่ขยายไม่ให้โครงสร้างขององค์ประกอบที่คุณเพิ่มเมื่อเทียบกับ [1, 2, 3, 4, [5, 6, 7], (8, 9, 10), range(11, 14)]กับตัวอย่างของคุณโดยใช้ผนวกคุณจะได้รับ Python 3
Yohan Obadia

1
@YohanObadia หากเป็นเช่นนั้นสำหรับ Python 3 ใน '17 จะไม่เป็นเช่นนั้นอีกต่อไปแล้ว - Python 3.7.7 ทำสิ่งที่ poke อธิบายไว้อย่างแน่นอน
Post169

28

นอกเหนือจากappendฟังก์ชั่นถ้าหาก "หลายค่า" คุณหมายถึงรายการอื่นคุณสามารถต่อค่าเหล่านั้นเข้าด้วยกัน

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]

9

ถ้าคุณใช้เวลาดูที่เอกสารอย่างเป็นทางการคุณจะเห็นด้านล่างขวา,append extendนั่นคือสิ่งที่คุณกำลังมองหา

นอกจากนี้itertools.chainหากคุณสนใจการวนซ้ำที่มีประสิทธิภาพมากกว่าการจบด้วยโครงสร้างข้อมูลที่มีประชากรเต็ม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.