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à [ [] for _ in range[10]]
Thí 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 đăng này sẽ thảo luận về cách tạo một danh sách trống với kích thước nhất định trong Python.
Để gán bất kỳ giá trị nào cho một danh sách bằng toán tử gán tại vị trí i
, a[i] = x
, kích thước danh sách của bạn phải ít nhất là i+1
. Nếu không, nó sẽ tăng một IndexError
, như hình dưới đây:
if__name__=='__main__':__name__=='__main__': a=[]a =[] a[0]=1a[0]= 1 print[a]print[a] & nbsp; & nbsp; & nbsp; & nbsp;# nâng cao indexError: Danh sách chỉ mục gán ra khỏi phạm vi# raise IndexError: list assignment index out of range |
Tải xuống mã
& nbsp; Giải pháp là tạo một danh sách trống của None
khi các mục danh sách không được biết trước. Điều này có thể dễ dàng thực hiện, như hình dưới đây:
The solution is to create an empty list of None
when list items are not known in advance. This can be easily done, as shown below:
if__name__=='__main__':__name__=='__main__': a=[None]*5a =[None]*5 print[a]print[a] & nbsp; & nbsp; & nbsp; & nbsp;# in [none, none, none, none, none]# prints [None, None, None, None, None] |
Tải xuống & nbsp; & nbsp; mã
& nbsp; Mã trên sẽ tạo một danh sách kích thước
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
0, trong đó mỗi vị trí được khởi tạo bởi None
. None
thường được sử dụng trong Python để thể hiện sự vắng mặt của một giá trị.The above code will create a list of size
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
0, where each position is initialized by None
. None
is frequently used in Python to represent the absence of a value.& nbsp; Một giải pháp khác để tạo danh sách trống với kích thước nhất định là sử dụng danh sách toàn diện:
Another alternative for creating empty lists with
a given size is to use list comprehensions:
if__name__=='__main__':__name__=='__main__': a=[Noneforxinrange[5]]a =[Noneforxinrange[5]] print[a]print[a] & nbsp; & nbsp; & nbsp; & nbsp;# in [[], [], [], [], []]# prints [[], [], [], [], []] |
Tải xuống & nbsp; & nbsp; mã
Giải pháp nào để sử dụng?
Giải pháp đầu tiên hoạt động tốt cho các loại không tham chiếu như số. Nhưng bạn có thể gặp lỗi tham chiếu trong một số trường hợp. Ví dụ:
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
3 sẽ dẫn đến danh sách chứa cùng một đối tượng danh sách được lặp lại >>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append[0]
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
0 lần.
if__name__=='__main__':__name__=='__main__': a=[[]]*5a =[[]]*5 a[0].append[1]a[0].append[1] print[a]print[a] & nbsp; & nbsp; & nbsp; & nbsp;# in [[1], [1], [1], [1], [1]]# prints [[1], [1], [1], [1], [1]] |
Tải xuống & nbsp; & nbsp; mã
& nbsp; Giải pháp cho vấn đề này là sử dụng các toàn bộ danh sách như thế này:
The solution to this problem is using list comprehensions like this:
if__name__=='__main__':__name__=='__main__': a=[[]forxinrange[5]]a =[[]forxin range[5]] a[0].append[1]a[0].append[1] print[a]print[a] & nbsp; & nbsp; & nbsp; & nbsp;# in [[1], [], [], [], []]# prints [[1], [], [], [], []] |
Tải xuống & nbsp; & nbsp; mã
Đó là tất cả về việc tạo ra một danh sách trống với kích thước đã cho trong Python.
& nbsp; cũng xem:
Also See:
Khởi tạo một danh sách có cùng giá trị trong Python
Cảm ơn vì đã đọc.
Vui lòng sử dụng trình biên dịch trực tuyến của chúng tôi để đăng mã trong các nhận xét bằng C, C ++, Java, Python, JavaScript, C#, PHP và nhiều ngôn ngữ lập trình phổ biến hơn.
Như chúng tôi? Giới thiệu chúng tôi với bạn bè của bạn và giúp chúng tôi phát triển. Mã hóa hạnh phúc :] :]