Cách tiếp cận hiệu quả hiệu suất nhất
Bạn cũng có thể chèn phần tử bằng cách sử dụng lập chỉ mục lát trong danh sách. Ví dụ:
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index at which you want to insert item
>>> b = a[:] # Created copy of list "a" as "b".
# Skip this step if you are ok with modifying the original list
>>> b[insert_at:insert_at] = [3] # Insert "3" within "b"
>>> b
[1, 2, 3, 4]
Để chèn nhiều phần tử lại với nhau tại một chỉ mục nhất định, tất cả những gì bạn cần làm là sử dụng
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
3 của nhiều yếu tố mà bạn muốn chèn. Ví dụ:inserting multiple elements together at a given index, all you need to do is to use a >>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
3 of multiple elements that you want to insert. For example:>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
Để biết thêm về lập chỉ mục lát cắt, bạn có thể tham khảo: Hiểu ký hiệu lát cắt.
Lưu ý: Trong Python 3.x, sự khác biệt về hiệu suất giữa lập chỉ mục lát cắt và
4 giảm đáng kể và cả hai đều gần như tương đương. Tuy nhiên, trong Python 2.x, sự khác biệt này khá đáng chú ý. Tôi đã chia sẻ so sánh hiệu suất sau trong câu trả lời này. In Python 3.x, difference of performance between slice indexing and >>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
4 is significantly reduced and both are almost equivalent. However, in Python 2.x, this difference is quite noticeable. I have shared performance comparisons later in this answer.Thay thế bằng cách sử dụng danh sách hiểu [nhưng rất chậm về mặt hiệu suất]: [but very slow in terms of performance]:
Thay vào đó, nó cũng có thể đạt được bằng cách sử dụng danh sách hiểu với
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
5. [Nhưng xin đừng làm theo cách này. Nó chỉ là để minh họa]:>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
So sánh hiệu suất của tất cả các giải pháp
Đây là so sánh
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
6 của tất cả các câu trả lời với danh sách 1000 yếu tố trên Python 3.9.1 và Python 2.7.16. Câu trả lời được liệt kê theo thứ tự hiệu suất cho cả hai phiên bản Python.Python 3.9.1
Câu trả lời của tôi bằng cách sử dụng chèn cắt lát - nhanh nhất [2,25 PhaSEC mỗi vòng]
python3 -m timeit -s "a = list[range[1000]]" "b = a[:]; b[500:500] = [3]" 100000 loops, best of 5: 2.25 µsec per loop
Câu trả lời của Rushy Panchal với hầu hết các phiếu bầu bằng cách sử dụng
python3 -m timeit -s "a = list[range[1000]]" "b = a[:]; b.insert[500, 3]" 100000 loops, best of 5: 2.33 µsec per loop
Câu trả lời được chấp nhận của Atoztoa dựa trên sự hợp nhất của các danh sách cắt lát - thứ ba [5,01 PhaSEC mỗi vòng]
python3 -m timeit -s "a = list[range[1000]]" "b = a[:500] + [3] + a[500:]" 50000 loops, best of 5: 5.01 µsec per loop
Câu trả lời của tôi với danh sách hiểu và
5 - thứ tư [rất chậm với 135 Lausc mỗi vòng]>>> a = [1, 2, 4] >>> insert_at = 2 >>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]] >>> b [1, 2, 3, 4]
python3 -m timeit -s "a = list[range[1000]]" "[y for i, x in enumerate[a] for y in [[3, x] if i == 500 else [x, ]] ]" 2000 loops, best of 5: 135 µsec per loop
Python 2.7.16
Câu trả lời của tôi bằng cách sử dụng chèn cắt lát - nhanh nhất [2.09 PhaSEC mỗi vòng]
python -m timeit -s "a = list[range[1000]]" "b = a[:]; b[500:500] = [3]" 100000 loops, best of 3: 2.09 µsec per loop
Câu trả lời của Rushy Panchal với hầu hết các phiếu bầu bằng cách sử dụng
python -m timeit -s "a = list[range[1000]]" "b = a[:]; b.insert[500, 3]" 100000 loops, best of 3: 2.36 µsec per loop
Câu trả lời được chấp nhận của Atoztoa dựa trên việc hợp nhất các danh sách cắt lát - thứ ba [4,44 Lausec mỗi vòng]
python -m timeit -s "a = list[range[1000]]" "b = a[:500] + [3] + a[500:]" 100000 loops, best of 3: 4.44 µsec per loop
Câu trả lời của tôi với sự hiểu biết danh sách và
5 - thứ tư [rất chậm với 103 Lausc mỗi vòng]>>> a = [1, 2, 4] >>> insert_at = 2 >>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]] >>> b [1, 2, 3, 4]
0>>> a = [1, 2, 4] >>> insert_at = 2 # Index starting from which multiple elements will be inserted # List of elements that you want to insert together at "index_at" [above] position >>> insert_elements = [3, 5, 6] >>> a[insert_at:insert_at] = insert_elements >>> a # [3, 5, 6] are inserted together in `a` starting at index "2" [1, 2, 3, 5, 6, 4]
Trong bài viết này, chúng tôi sẽ thảo luận về cách chèn một yếu tố trong danh sách ở vị trí cụ thể. Trong danh sách Python cung cấp chức năng thành viên Chèn [] tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
1Nó chấp nhận một vị trí và một phần tử và chèn phần tử tại vị trí đã cho trong danh sách.
Hãy để xem một ví dụ,
Giả sử chúng ta có một danh sách các chuỗi, tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
2Bây giờ hãy để chèn ‘tại sao ở vị trí thứ 3 trong danh sách, tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
3Chỉ mục sẽ bắt đầu từ 0 trong danh sách. Vì vậy, phần tử sẽ được chèn ở vị trí thứ 3, tức là sau 0,1 & 2.
Quảng cáo
Vì vậy, nội dung danh sách sẽ là bây giờ,
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
4Chèn một phần tử ở đầu danh sách
Để chèn phần tử ở phía trước của danh sách trên, chức năng gọi chèn [], tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
5Vì vậy, nội dung danh sách sẽ là bây giờ,
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
6Chèn tất cả các yếu tố của danh sách khác tại chỉ mục cụ thể trong danh sách đã cho
Giả sử chúng ta có hai danh sách, tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
7Bây giờ chèn tất cả các yếu tố của List2 ở vị trí thứ 3 trong List1
Phương pháp 1:
Lặp lại list2 ngược và tiếp tục chèn phần tử ở chỉ mục thứ 3 trong List1 bằng danh sách.insert [] tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
8Phương pháp 2:
Splice list1 từ 0 đến 2 và hợp nhất tất cả các yếu tố của List2 trong đó. Sau đó hợp nhất tất cả các yếu tố còn lại của danh sách từ 3 đến cuối, tức là.
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" [above] position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
9Trong cả hai trường hợp, danh sách nội dung sẽ có ngay bây giờ,
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
0Ví dụ hoàn chỉnh như sau,
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
1Output:
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate[a] for y in [[3, x] if i == insert_at else [x, ]]]
>>> b
[1, 2, 3, 4]
2 & nbsp;