Lập chỉ mục Python nhiều phần tử

Bạn sử dụng cách lập chỉ mục đơn giản bằng cách sử dụng ký hiệu ngoặc vuông

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 1: For Loop
for i in range[len[indices]]:
    lst[indices[i]] = repl[i]

print[lst]
# ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']
1 để thay thế phần tử tại chỉ mục i trong danh sách lst bằng phần tử mới x

>>> lst = ['Alice', 'Bob', 'Carl', 'Dave']
>>> x = 'Chris'
>>> i = 2
>>> lst[i] = x
>>> lst
['Alice', 'Bob', 'Chris', 'Dave']

Nhưng nếu bạn muốn thay thế nhiều phần tử ở nhiều chỉ số thì sao?

Xây dựng vấn đề. Thay thế nhiều yếu tố

Được cho

  • Danh sách lst
  • Yếu tố
    lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
    repl = ['None', 'Foo', 'Bar']
    indices = [0, 2, 5]
    
    
    # Method 1: For Loop
    for i in range[len[indices]]:
        lst[indices[i]] = repl[i]
    
    print[lst]
    # ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']
    
    6
  • Chỉ số
    lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
    repl = ['None', 'Foo', 'Bar']
    indices = [0, 2, 5]
    
    
    # Method 1: For Loop
    for i in range[len[indices]]:
        lst[indices[i]] = repl[i]
    
    print[lst]
    # ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']
    
    7

Làm cách nào để thay thế các phần tử tại các chỉ số

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 1: For Loop
for i in range[len[indices]]:
    lst[indices[i]] = repl[i]

print[lst]
# ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']
8 trong danh sách lst bằng các phần tử mới
lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 2: zip[] and for loop
for index, replacement in zip[indices, repl]:
    lst[index] = replacement

print[lst]
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
0 theo thứ tự đó?

Phương pháp 1. cho vòng lặp

Bạn có thể sử dụng hàm

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 2: zip[] and for loop
for index, replacement in zip[indices, repl]:
    lst[index] = replacement

print[lst]
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
1 để lấy cặp chỉ số thứ i và giá trị thay thế thứ i trong vòng lặp for. Sau đó, bạn thay thế từng phần tử một

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 1: For Loop
for i in range[len[indices]]:
    lst[indices[i]] = repl[i]

print[lst]
# ['None', 'Bob', 'Foo', 'Dave', 'Elena', 'Bar', 'George']

Phương pháp 2. zip[] và vòng lặp cho

Một cách tiếp cận Pythonic hơn là nén các chỉ số và giá trị thay thế lại với nhau, sau đó chỉ cần lặp lại chúng theo cặp bằng cách sử dụng nhiều phép gán

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 2: zip[] and for loop
for index, replacement in zip[indices, repl]:
    lst[index] = replacement

print[lst]
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']

Phương pháp 3. NumPy + Bài tập lát cắt

Đứng trên vai người khổng lồ. Bạn có thể sử dụng chức năng lập chỉ mục nâng cao mạnh mẽ của NumPy để chuyển danh sách các chỉ mục cần thay thế trong lược đồ lập chỉ mục—và thay thế các chỉ mục đó bằng tất cả các phần tử ở bên phải của thao tác gán

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]


# Method 3: NumPy + Slice Assignment
import numpy as np
lst = np.array[lst]
lst[indices] = repl
print[lst]
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']

Phương pháp 4. Giải pháp một lớp Python

Tôi yêu Python one-liners [đó là lý do tại sao tôi đã viết một cuốn sách về chúng]. Chúng ta có thể giải quyết vấn đề thay thế nhiều lần trong một dòng không?

lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
repl = ['None', 'Foo', 'Bar']
indices = [0, 2, 5]

# Method 4: Python One-Liner
lst = [repl[indices.index[i]] if i in indices else lst[i] for i in range[len[lst]]]
print[lst]
# ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
  • Chúng tôi sử dụng khả năng hiểu danh sách
    lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
    repl = ['None', 'Foo', 'Bar']
    indices = [0, 2, 5]
    
    
    # Method 2: zip[] and for loop
    for index, replacement in zip[indices, repl]:
        lst[index] = replacement
    
    print[lst]
    # ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
    2 để lặp lại tất cả các chỉ số từ 0 đến độ dài của danh sách
  • Chúng ta sử dụng toán tử bậc ba
    lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
    repl = ['None', 'Foo', 'Bar']
    indices = [0, 2, 5]
    
    
    # Method 2: zip[] and for loop
    for index, replacement in zip[indices, repl]:
        lst[index] = replacement
    
    print[lst]
    # ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
    3 để kiểm tra xem chỉ số này có phải là chỉ số cần phải thay thế hay không
  • Nếu chỉ mục không phải thay thế thì trả về phần tử ban đầu, nếu không thì trả về phần tử thay thế
  • Chúng ta sử dụng phương pháp
    lst = ['Alice', 'Bob', 'Carl', 'Dave', 'Elena', 'Frank', 'George']
    repl = ['None', 'Foo', 'Bar']
    indices = [0, 2, 5]
    
    
    # Method 2: zip[] and for loop
    for index, replacement in zip[indices, repl]:
        lst[index] = replacement
    
    print[lst]
    # ['None' 'Bob' 'Foo' 'Dave' 'Elena' 'Bar' 'George']
    4 để tìm ra chỉ số của phần tử để thay thế phần tử danh sách ban đầu

Không đẹp lắm phải không?

Sách Python One-Liners. Làm chủ một dòng đầu tiên

Các lập trình viên Python sẽ cải thiện các kỹ năng khoa học máy tính của họ với những lời khuyên hữu ích này

Python One-Liners sẽ dạy bạn cách đọc và viết “one-liners”. tuyên bố ngắn gọn về chức năng hữu ích được gói gọn trong một dòng mã. Bạn sẽ học cách giải nén một cách có hệ thống và hiểu bất kỳ dòng mã Python nào, đồng thời viết Python được nén mạnh mẽ, hùng hồn như một chuyên gia

Năm chương của cuốn sách bao gồm [1] mẹo và thủ thuật, [2] biểu thức chính quy, [3] học máy, [4] chủ đề khoa học dữ liệu cốt lõi và [5] thuật toán hữu ích

Giải thích chi tiết về một lớp giới thiệu các khái niệm khoa học máy tính quan trọng và nâng cao kỹ năng mã hóa và phân tích của bạn. Bạn sẽ tìm hiểu về các tính năng nâng cao của Python như khả năng hiểu danh sách, cắt lớp, hàm lambda, biểu thức chính quy, hàm ánh xạ và rút gọn cũng như các bài tập cắt lát

Bạn cũng sẽ học cách

  • Tận dụng cấu trúc dữ liệu để giải quyết các vấn đề trong thế giới thực, chẳng hạn như sử dụng lập chỉ mục Boolean để tìm các thành phố có ô nhiễm trên mức trung bình
  • Sử dụng các khái niệm cơ bản về NumPy như mảng, hình dạng, trục, loại, phát sóng, lập chỉ mục nâng cao, cắt, sắp xếp, tìm kiếm, tổng hợp và thống kê
  • Tính toán số liệu thống kê cơ bản của mảng dữ liệu đa chiều và thuật toán K-Means cho học không giám sát
  • Tạo các biểu thức chính quy nâng cao hơn bằng cách sử dụng nhóm và nhóm được đặt tên, giao diện phủ định, ký tự thoát, khoảng trắng, bộ ký tự [và bộ ký tự phủ định] và toán tử tham lam/không tham lam
  • Hiểu một loạt các chủ đề khoa học máy tính, bao gồm đảo chữ cái, đối xứng, siêu bộ, hoán vị, giai thừa, số nguyên tố, số Fibonacci, xáo trộn, tìm kiếm và sắp xếp theo thuật toán

Đến cuối cuốn sách, bạn sẽ biết cách viết Python ở mức tinh tế nhất và tạo ra những tác phẩm “nghệ thuật Python” ngắn gọn, đẹp mắt chỉ trong một dòng

Nhận Python One-Liners của bạn trên Amazon

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Chủ Đề