Tôi có mã (đơn giản hóa) sau đây:
a = a[::3]
b = b[::3]
c = c[::3]
d = d[::3]
a,b,c,d,
Trên thực tế, chúng đều là những biểu thức rất phức tạp nên tôi muốn viết chúng như thế này:
cho l trong [a, b, c, d]
l = l[::3]
, tất nhiên là không. Làm cách nào tôi có thể đặt từng phần tử thứ n vào đúng vị trí của nó? Nếu tôi muốn xóa mọi phần tử thứ n, tôi có thể sử dụng del
, nhưng đây không phải là trường hợp.
Về cơ bản, tôi muốn:
- mỗi
a,b,c,d
Chỉ sử dụng một lần
- Chỉ định lát cắt (hoặc bất kỳ thứ gì) một lần.
Sử dụng cách tiếp cận hiện tại của bạn, làm l = l[::3]
Bạn chỉ đang gán lại biến, hay nói cách khác là tạo một bản sao của danh sách, bản sao này sẽ để lại Một
không thay đổi.
Hãy xem một ví dụ bằng cách sử dụng NHẬN DẠNG
Chúng ta có thể thấy rằng danh tính của đối tượng sẽ khác sau khi gán lại:
cho tôi trong [a,b]:
print(id(a)) # 43269876104
in(id(i)) # 43269876104
tôi = tôi[::3]
print(id(i)) # 43271280456
break
Tuy nhiên, bạn có thể sử dụngphân bổ látSửa đổi dữ liệu tại chỗ:
cho tôi trong [a,b]:
print(id(a)) # 43269876104
in(id(i)) # 43269876104
tôi[:] = tôi[::3]
in(id(i)) # 43269876104
break
Vì vậy, quay lại trường hợp của bạn, bạn có thể làm điều này:
cho tôi trong [a, b, c, d]:
tôi[:] = tôi[::3]
Đây là một ví dụ đơn giản:
a = danh sách (phạm vi (30))
b = danh sách (phạm vi (30))
cho tôi trong [a,b]:
tôi[:] = tôi[::3]
in(b)
# [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
Tôi là một lập trình viên xuất sắc, rất giỏi!