Câu trả lời:
Có, thứ tự của các yếu tố trong danh sách python là liên tục.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
và def fn_2(): print(fn_1())
Liệu thứ tự sẽ LUÔN LUÔN không phân biệt số lần tôi sử dụng fn_1 () bao nhiêu lần?
Tóm lại, có, trật tự được bảo tồn. Trong thời gian dài:
Nói chung, các định nghĩa sau sẽ luôn áp dụng cho các đối tượng như danh sách:
Một danh sách là một tập hợp các yếu tố mà có thể chứa các thành phần trùng lặp và có một trật tự xác định rằng nhìn chung không thay đổi trừ khi làm một cách rõ ràng để làm như vậy. ngăn xếp và hàng đợi là cả hai loại danh sách cung cấp hành vi cụ thể (thường bị giới hạn) để thêm và xóa các thành phần (ngăn xếp là LIFO, hàng đợi là FIFO). Danh sách là đại diện thực tế của, tốt, danh sách các điều. Một chuỗi có thể được coi là một danh sách các ký tự, vì thứ tự là quan trọng ( "abc" != "bca"
) và trùng lặp trong nội dung của chuỗi chắc chắn được cho phép ( "aaa"
có thể tồn tại và != "a"
).
Tập hợp là tập hợp các phần tử không thể chứa các bản sao và có thứ tự không xác định có thể thay đổi theo thời gian. Các bộ không đại diện cho danh sách các thứ nhiều như chúng mô tả mức độ của một lựa chọn của một số thứ. Cấu trúc bên trong của tập hợp, cách các phần tử của nó được lưu trữ tương đối với nhau, thường không có nghĩa là truyền đạt thông tin hữu ích. Trong một số triển khai, các bộ luôn được sắp xếp bên trong; trong những trường hợp khác, thứ tự đơn giản là không xác định (thường phụ thuộc vào hàm băm).
Bộ sưu tập là một thuật ngữ chung để chỉ bất kỳ đối tượng nào được sử dụng để lưu trữ một số (thường là biến) của các đối tượng khác. Cả danh sách và bộ là một loại bộ sưu tập. Tuples và Mảng thường không được coi là bộ sưu tập. Một số ngôn ngữ coi bản đồ (thùng chứa mô tả các liên kết giữa các đối tượng khác nhau) là một loại bộ sưu tập.
Lược đồ đặt tên này đúng với tất cả các ngôn ngữ lập trình mà tôi biết, bao gồm Python, C ++, Java, C # và Lisp (trong đó danh sách không giữ trật tự của chúng sẽ rất thảm khốc). Nếu bất cứ ai biết đây không phải là trường hợp, xin vui lòng chỉ nói như vậy và tôi sẽ chỉnh sửa câu trả lời của tôi. Lưu ý rằng việc triển khai cụ thể có thể sử dụng các tên khác cho các đối tượng này, chẳng hạn như vectơ trong C ++ và flex trong ALGOL 68 (cả hai danh sách; flex về mặt kỹ thuật chỉ là một mảng có thể thay đổi kích thước).
Nếu có bất kỳ sự nhầm lẫn nào trong trường hợp của bạn do các chi tiết cụ thể về cách thức +
hoạt động của dấu hiệu ở đây, chỉ cần biết rằng thứ tự đó rất quan trọng đối với các danh sách và trừ khi có lý do rất chính đáng để tin nếu không bạn có thể luôn luôn cho rằng các hoạt động của danh sách bảo vệ trật tự . Trong trường hợp này, +
dấu hiệu này hoạt động giống như đối với các chuỗi (dù sao đây thực sự chỉ là danh sách các ký tự): nó lấy nội dung của một danh sách và đặt nó phía sau nội dung của một chuỗi khác.
Nếu chúng ta có
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Sau đó
list1 + list2
Giống như
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
Mà đánh giá
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Nhiều như
"abdcde" + "fghijk"
Sản xuất
"abdcdefghijk"
Bạn đang nhầm lẫn 'bộ' và 'danh sách'. Một bộ không đảm bảo trật tự, nhưng danh sách làm.
Các bộ được khai báo bằng dấu ngoặc nhọn : {}
. Ngược lại, danh sách được khai báo bằng dấu ngoặc vuông : []
.
mySet = {a, b, c, c}
Không đảm bảo trật tự, nhưng danh sách không:
myList = [a, b, c]
Tôi cho rằng một điều có thể liên quan đến bạn là liệu các mục có thể thay đổi hay không, ví dụ như 2 trở thành một số khác nhau. Bạn có thể đặt tâm trí của mình thoải mái ở đây, bởi vì trong Python, số nguyên là bất biến , có nghĩa là chúng không thể thay đổi sau khi chúng được tạo.
Không phải tất cả mọi thứ trong Python là bất biến. Ví dụ, danh sách có thể thay đổi --- chúng có thể thay đổi sau khi được tạo. Vì vậy, ví dụ, nếu bạn có một danh sách các danh sách
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Ở đây, tôi đã thay đổi mục đầu tiên của a
(tôi đã thêm 7
vào nó). Người ta có thể tưởng tượng việc xáo trộn mọi thứ xung quanh và nhận được những điều bất ngờ ở đây nếu bạn không cẩn thận (và thực tế, điều này xảy ra với mọi người khi họ bắt đầu lập trình bằng Python theo cách này hay cách khác; chỉ cần tìm kiếm trang web này để "sửa đổi danh sách trong khi lặp qua nó "để xem hàng tá ví dụ).
Nó cũng đáng để chỉ ra rằng x = x + [a]
và x.append(a)
không phải là điều tương tự. Cái thứ hai biến đổi x
, và cái thứ nhất tạo ra một danh sách mới và gán nó vào x
. Để thấy sự khác biệt, hãy thử cài đặt y = x
trước khi thêm bất cứ thứ gì vào x
và thử từng cái, và xem sự khác biệt mà hai người tạo ra y
.
aList = [1,2,3]
i = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
một danh sách
[2]
Đạo đức là khi sửa đổi một danh sách trong một vòng lặp được điều khiển bởi danh sách, thực hiện hai bước:
aList=[1,2,3]
i=0
for item in aList:
if i<2:
aList[i]="del"
i+=1
aList
['del', 'del', 3]
for i in range(2):
del aList[0]
aList
[3]