Câu trả lời hiện đang được chấp nhận của Varunl
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
Hoạt động tốt cho các loại không tham chiếu như số. Thật không may nếu bạn muốn tạo một danh sách danh sách, bạn sẽ gặp phải các lỗi tham khảo. Ví dụ trong Python 2.7.6:
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
Như bạn có thể thấy, mỗi phần tử đang chỉ vào cùng một đối tượng danh sách. Để khắc phục điều này, bạn có thể tạo một phương thức sẽ khởi tạo từng vị trí thành một tham chiếu đối tượng khác.
def init_list_of_objects[size]:
list_of_objects = list[]
for i in range[0,size]:
list_of_objects.append[ list[] ] #different object reference each time
return list_of_objects
>>> a = init_list_of_objects[10]
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
Có khả năng là một cách Python mặc định, tích hợp trong việc thực hiện việc này [thay vì viết một hàm], nhưng tôi không chắc nó là gì. Sẽ rất vui khi được sửa chữa!
Chỉnh sửa: Đó là
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
7Thí dụ :
>>> [ [random.random[] for _ in range[2] ] for _ in range[5]]
>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]
Bài viết này mô tả cách khởi tạo một danh sách với bất kỳ kích thước nào [số lượng phần tử] và các giá trị trong Python.
- Tạo một danh sách trống
- Khởi tạo một danh sách với bất kỳ kích thước và giá trị nào
- Ghi chú về khởi tạo danh sách 2D [danh sách danh sách]
- Đối với các bộ đếm và mảng
Bạn có thể khởi tạo các bộ dữ liệu cũng như danh sách.
- Lưu ý rằng một tuple có một phần tử yêu cầu
5.def init_list_of_objects[size]: list_of_objects = list[] for i in range[0,size]: list_of_objects.append[ list[] ] #different object reference each time return list_of_objects >>> a = init_list_of_objects[10] >>> a [[], [], [], [], [], [], [], [], [], []] >>> a[0].append[0] >>> a [[0], [], [], [], [], [], [], [], [], []] >>>
Tạo một danh sách trống
Khởi tạo một danh sách với bất kỳ kích thước và giá trị nào
l_empty = []
print[l_empty]
# []
print[len[l_empty]]
# 0
Xem bài viết sau đây về việc khởi tạo mảng numpy
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
8.l_empty.append[100]
l_empty.append[200]
print[l_empty]
# [100, 200]
l_empty.remove[100]
print[l_empty]
# [200]
Numpy: Tạo một ndarray với tất cả các yếu tố được khởi tạo với cùng một giá trị
- Một danh sách trống được tạo như sau. Bạn có thể nhận được số lượng các yếu tố của một danh sách với chức năng tích hợp
9.>>> a = [[]]*10 >>> a [[], [], [], [], [], [], [], [], [], []] >>> a[0].append[0] >>> a [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]] >>>
- Bạn có thể thêm một phần tử bằng
0 hoặc xóa nó bằngdef init_list_of_objects[size]: list_of_objects = list[] for i in range[0,size]: list_of_objects.append[ list[] ] #different object reference each time return list_of_objects >>> a = init_list_of_objects[10] >>> a [[], [], [], [], [], [], [], [], [], []] >>> a[0].append[0] >>> a [[0], [], [], [], [], [], [], [], [], []] >>>
1.def init_list_of_objects[size]: list_of_objects = list[] for i in range[0,size]: list_of_objects.append[ list[] ] #different object reference each time return list_of_objects >>> a = init_list_of_objects[10] >>> a [[], [], [], [], [], [], [], [], [], []] >>> a[0].append[0] >>> a [[0], [], [], [], [], [], [], [], [], []] >>>
Khởi tạo một danh sách với bất kỳ kích thước và giá trị nào
Xem bài viết sau đây về việc khởi tạo mảng numpy
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
8.Numpy: Tạo một ndarray với tất cả các yếu tố được khởi tạo với cùng một giá trị
l = [0] * 10
print[l]
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print[len[l]]
# 10
Một danh sách được tạo ra lặp lại các yếu tố của danh sách ban đầu.
print[[0, 1, 2] * 3]
# [0, 1, 2, 0, 1, 2, 0, 1, 2]
Bạn có thể tạo một danh sách các số tuần tự với
def init_list_of_objects[size]:
list_of_objects = list[]
for i in range[0,size]:
list_of_objects.append[ list[] ] #different object reference each time
return list_of_objects
>>> a = init_list_of_objects[10]
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
3.- Cách sử dụng phạm vi [] trong Python
Ghi chú về khởi tạo danh sách 2D [danh sách danh sách]
Hãy cẩn thận khi khởi tạo một danh sách các danh sách.
Mã sau đây không tốt.
l_2d_ng = [[0] * 4] * 3
print[l_2d_ng]
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Nếu bạn cập nhật một danh sách, tất cả các danh sách sẽ được thay đổi.
l_2d_ng[0][0] = 5
print[l_2d_ng]
# [[5, 0, 0, 0], [5, 0, 0, 0], [5, 0, 0, 0]]
l_2d_ng[0].append[100]
print[l_2d_ng]
# [[5, 0, 0, 0, 100], [5, 0, 0, 0, 100], [5, 0, 0, 0, 100]]
Điều này là do các danh sách bên trong là tất cả cùng một đối tượng.
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
0Bạn có thể viết như sau bằng cách sử dụng toàn bộ danh sách.
- Liệt kê sự hiểu biết trong Python
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
1Mỗi danh sách bên trong được coi là một đối tượng khác nhau.
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
2Mặc dù
def init_list_of_objects[size]:
list_of_objects = list[]
for i in range[0,size]:
list_of_objects.append[ list[] ] #different object reference each time
return list_of_objects
>>> a = init_list_of_objects[10]
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
3 được sử dụng trong ví dụ trên, bất kỳ kích thước nào có thể chấp nhận được.>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
3Nếu bạn muốn tạo một danh sách đa chiều, bạn có thể làm tổ danh sách toàn diện.
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
4Đối với các bộ đếm và mảng
Bạn có thể khởi tạo các bộ dữ liệu cũng như danh sách.
Lưu ý rằng một tuple có một phần tử yêu cầu
def init_list_of_objects[size]:
list_of_objects = list[]
for i in range[0,size]:
list_of_objects.append[ list[] ] #different object reference each time
return list_of_objects
>>> a = init_list_of_objects[10]
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
5.- Một tuple với một yếu tố yêu cầu một dấu phẩy trong Python
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
5Đối với loại
def init_list_of_objects[size]:
list_of_objects = list[]
for i in range[0,size]:
list_of_objects.append[ list[] ] #different object reference each time
return list_of_objects
>>> a = init_list_of_objects[10]
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
6, bạn có thể chuyển danh sách khởi tạo cho hàm tạo.- Mảng - Mảng hiệu quả của các giá trị số - Tài liệu Python 3.9.0
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
6