Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> u = [4, 5, 6, 7, 8, 9]
>>> u[1::1] = [3, 2, 1, 0]
>>> u
[4, 3, 2, 1, 0]
>>> u[9:0:-1] = [8, 7, 6, 5]
>>> u
[4, 5, 6, 7, 8]
>>> u[9:0:-1] = [16, 12, 8]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 3 to extended slice of size 4
>>> u
[4, 5, 6, 7, 8]
>>>
Hành vi mong đợi: không có ngoại lệ được ném vào câu lệnh chuyển nhượng cuối cùng; u
nên in trên dòng cuối cùng là [4, 8, 12, 16]
.Tại sao tôi không thể gán một biến lặp tùy ý cho một lát mở rộng có bước là -1?
Tôi có thể gán cho một lát mở rộng có bước là 1, ngay cả khi tôi có thể chuyển đổi được "độ dài sai". Tại sao sau đó tôi không thể gán cho một lát mở rộng có bước là -1 và nó hoạt động theo cách hiển nhiên?
Làm cho tinh thần. Tuy nhiên, OP là đúng cho một bước -1 hành vi mong đợi là khá rõ ràng, do đó, nó có thể là tốt đẹp để có mà đặc biệt-cased cách một bước 1 là ... – weronika
@weronika Đồng ý, nhưng nói rằng để python devs;) – obmarg