การแทรกสตริงลงในรายการโดยไม่แยกเป็นอักขระ


113

ฉันเพิ่งเริ่มใช้ Python และไม่สามารถหาวิธีแทรกสตริงลงในรายการได้โดยที่ไม่แยกเป็นอักขระเดี่ยว:

>>> list=['hello','world']
>>> list
['hello', 'world']
>>> list[:0]='foo'
>>> list
['f', 'o', 'o', 'hello', 'world']

ฉันควรทำอย่างไรเพื่อให้มี:

['foo', 'hello', 'world']

ค้นหาเอกสารและเว็บ แต่ยังไม่ถึงวันของฉัน

คำตอบ:


147

ในการเพิ่มท้ายรายการ:

list.append('foo')

ในการแทรกที่จุดเริ่มต้น:

list.insert(0, 'foo')

ฉันแน่ใจว่าคนส่วนใหญ่รู้สิ่งนี้ แต่เพียงเพื่อเพิ่ม: การทำlist2 = list1.append('foo')หรือlist2 = list1.insert(0, 'foo') จะส่งผลให้list2มีค่าเป็น None ทั้งสองอย่างappendและinsertเป็นวิธีการที่เปลี่ยนรายการที่ใช้แทนที่จะส่งคืนรายการใหม่
MoltenMuffins

19

ยึดตามวิธีการที่คุณใช้เพื่อแทรกให้ใช้

list[:0] = ['foo']

http://docs.python.org/release/2.6.6/library/stdtypes.html#mutable-sequence-types


การแทรกการกำหนดชิ้นส่วนนี้เร็วกว่า list.insert ของ Raffe Kettler () ดูผนวกคอลัมน์อาร์เรย์ 2 มิติ ไม่ใช่ว่าเรื่องปกติ
ChaimG

15

อีกทางเลือกหนึ่งคือการใช้โอเวอร์โหลด+ operator:

>>> l = ['hello','world']
>>> l = ['foo'] + l
>>> l
['foo', 'hello', 'world']

1
เพิ่งเห็นคุณสามารถใช้ต่อท้ายได้ด้วย: l += ['foo']
Toni Homedes i Saun



4

อย่าใช้ list เป็นชื่อตัวแปร มันอยู่ในตัวที่คุณกำลังกำบัง

ในการแทรกให้ใช้ฟังก์ชันแทรกของรายการ

l = ['hello','world']
l.insert(0, 'foo')
print l
['foo', 'hello', 'world']

นี่ไม่ถูกต้องนัก insert()ใช้อาร์กิวเมนต์ที่สอง
Rafe Kettler

@RafeKettler อ๊ะต่อท้ายเป็นสิ่งที่ไม่มีอาร์กิวเมนต์สถานที่
Spencer Rathbun


0
ls=['hello','world']
ls.append('python')
['hello', 'world', 'python']

หรือ (ใช้insertฟังก์ชันที่คุณสามารถใช้ตำแหน่งดัชนีในรายการ)

ls.insert(0,'python')
print(ls)
['python', 'hello', 'world']

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