Hãy tưởng tượng một số mảng sần sờ, ví dụ: x = np.linspace(1,10)
.Tôi nên sử dụng giá trị nào trong một phạm vi cắt để bao gồm giá trị cuối cùng trong một mảng có nhiều mảng?
x[i:j]
cho tôi chế độ xem x
cho phạm vi [i,j)
. Tôi thích rằng tôi cũng có thể làm x[i:-k]
loại trừ các yếu tố k
cuối cùng.
Tuy nhiên, để bao gồm yếu tố cuối cùng tôi cần làm x[i:]
.
Câu hỏi của tôi là: Làm cách nào để kết hợp hai ký hiệu này nếu tôi chẳng hạn cần lặp lại trên k
.
Nói rằng tôi muốn làm điều này:
l = list()
for k in [5,4,3,2,1]:
l.append(x[:-k])
l.append(x[:])
gì làm phiền tôi là dòng cuối cùng. Trong ví dụ đơn giản này tất nhiên nó không làm nhiều sự khác biệt, nhưng đôi khi điều này trở nên khó chịu hơn nhiều. Những gì tôi nhớ là một cái gì đó giống như DRY.
Khóa đoạn sau đây KHÔNG mang lại kết quả mong muốn, nhưng đại diện cho phong cách của mã tôi tìm kiếm:
l = list()
for k in [5,4,3,2,1,0]:
l.append(x[:-k])
Cảm ơn advaned.
làm thế nào để kết quả sản xuất bởi rằng đoạn cuối cùng khác với kết quả mong muốn của bạn? Tôi không hoàn toàn rõ ràng về những gì bạn đang thực sự cố gắng để sản xuất. –
@MattBall Đoạn cuối, khi 'k = 0', sẽ đánh giá' x [: - 0] ', là một mảng trống, trái với' x [:] 'là mảng hoàn chỉnh. – lxop
bản sao có thể có của [danh sách/mảng Python: vô hiệu hóa việc lập chỉ mục phủ định xung quanh trong lát] (http://stackoverflow.com/questions/13410615/python-lists-arrays-disable-negative-indexing-wrap-around-in- slice) – wim