Phương thức append[] của Python trả về giá trị Không.
Điều này là do việc thêm một mục vào danh sách sẽ cập nhật danh sách hiện có. Nó không tạo ra một cái mới.
nums = [1,2,3,4,5]
nums.append[10]
print[nums] # [1, 2, 3, 4, 5, 10]
nums2 = [1,2,3,4,5]
new = nums2.append[10]
print[new] # None
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
Traceback [cuộc gọi gần đây nhất cuối cùng]. Tệp “python”, dòng 10, trong
Bất cứ ai biết những gì là sai?
Bằng cách tiếp tục, bạn đồng ý với Điều khoản dịch vụ và Chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận các ưu đãi và cơ hội từ Career Karma qua điện thoại, tin nhắn văn bản và email
Trong hướng dẫn này, chúng tôi nói về ý nghĩa của lỗi này, tại sao nó lại xuất hiện và cách bạn có thể giải quyết nó, có tham khảo một ví dụ
LoạiLỗi. Đối tượng 'NoneType' không có thuộc tính 'chắp thêm'
Trong Python, quy ước là các phương thức thay đổi trình tự sẽ trả về Không có. Lý do cho điều này là vì việc trả lại một bản sao mới của danh sách sẽ không tối ưu từ góc độ hiệu suất khi danh sách hiện có chỉ có thể được thay đổi
Vì
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 không tạo danh sách mới nên rõ ràng phương thức này sẽ thay đổi danh sách hiện có. Điều này ngăn bạn vô tình thêm một mục vào danh sách hiện cóMột lỗi phổ biến mà các lập trình viên mắc phải là gán kết quả của phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 cho một danh sách mới. Điều này không hoạt động vì n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 thay đổi danh sách hiện có. n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 không tạo danh sách mới mà bạn có thể gán cho một biếnMột kịch bản ví dụ
Tiếp theo, chúng tôi xây dựng một chương trình cho phép thủ thư thêm một cuốn sách vào danh sách các bản ghi. Danh sách các bản ghi này chứa thông tin về tác giả của một cuốn sách và số lượng bản sao có sẵn
Hãy bắt đầu bằng cách xác định danh sách sách
books = [ { "title": "The Great Gatsby", "available": 3 } ]
Danh sách sách chứa một từ điển. Một từ điển lưu trữ thông tin về một cuốn sách cụ thể. Chúng tôi thêm một bản ghi vào danh sách sách này
books = books.append[ { "title": "Twilight", "available": 2 } ]
Danh sách “sách” của chúng tôi hiện có hai bản ghi. Tiếp theo, chúng tôi yêu cầu người dùng cung cấp thông tin về cuốn sách mà họ muốn thêm vào danh sách
title = input["Enter the title of the book: "] available = input["Enter how many copies of the book are available: "]
Bây giờ chúng tôi có thông tin này, chúng tôi có thể tiến hành thêm bản ghi vào danh sách sách của mình. Chúng ta có thể làm điều này bằng cách sử dụng phương thức append[]
books = books.append[ { "title": title, "available": int[available] } ]
Chúng tôi đã thêm một từ điển mới vào danh sách “sách”. Chúng tôi đã chuyển đổi giá trị của "có sẵn" thành một số nguyên trong từ điển của chúng tôi. Chúng tôi gán kết quả của phương pháp
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 cho biến "sách". Cuối cùng, chúng tôi in danh sách sách mới ra bàn điều khiểnprint[books]
Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra
Enter the title of the book: Pride and Prejudice Enter how many copies of the book are available: 5 Traceback [most recent call last]: File "main.py", line 12, in books = books.append[ AttributeError: 'NoneType' object has no attribute 'append'
Mã của chúng tôi thành công yêu cầu chúng tôi nhập thông tin về một cuốn sách. Khi mã của chúng tôi cố gắng thêm sách vào danh sách sách của chúng tôi, một lỗi sẽ được trả về
» THÊM. Python Zip. Hướng dẫn từng bước
Giải pháp
Mã của chúng tôi trả về lỗi vì chúng tôi đã gán kết quả của phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 cho một biến. Hãy xem mã thêm Chạng vạng vào danh sách sách của chúng tôibooks = books.append[ { "title": "Twilight", "available": 2 } ]
Mã này thay đổi giá trị của “sách” thành giá trị được trả về bởi phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1. n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 trả về giá trị Không có. Điều này có nghĩa là "sách" trở thành Không cóKhi chúng tôi cố gắng thêm cuốn sách mà người dùng đã viết trong bảng điều khiển vào danh sách “sách”, mã của chúng tôi sẽ trả về lỗi. “sách” bằng Không và bạn không thể thêm giá trị vào giá trị Không có
Để giải quyết lỗi này, chúng tôi phải xóa toán tử gán khỏi mọi nơi mà chúng tôi sử dụng phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1books.append[ { "title": "Twilight", "available": 2 } ] … books.append[ { "title": title, "available": int[available] } ]
Chúng tôi đã xóa câu lệnh “books =” khỏi mỗi dòng mã này. Khi chúng tôi sử dụng phương pháp
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1, một cuốn từ điển sẽ được thêm vào sách. Chúng tôi không gán giá trị của "sách" cho giá trị mà n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 trả vềHãy chạy lại mã của chúng tôi
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
0Mã của chúng tôi đã thêm thành công một mục từ điển cho cuốn sách Kiêu hãnh và định kiến vào danh sách sách của chúng tôi
Sự kết luận
“Lỗi loại. Đối tượng ‘NoneType’ không có thuộc tính ‘chắp thêm’” được trả về khi bạn sử dụng toán tử gán với phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1Để giải quyết lỗi này, hãy đảm bảo rằng bạn không cố gắng gán kết quả của phương thức
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 cho một danh sách. Phương thức n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten[lists]:
results = []
for i in range[0,len[lists]]:
results = results.append[lists[i]]
return results
print flatten[n]
1 thêm một mục vào danh sách hiện có. Phương thức trả về Không, không phải là bản sao của danh sách hiện có» THÊM. Hàm bản đồ Python. Hướng dẫn từng bước
Bây giờ bạn đã sẵn sàng để giải quyết vấn đề Python phổ biến này như một chuyên gia
2 xếp hạng
Về chúng tôi. Career Karma là một nền tảng được thiết kế để giúp người tìm việc tìm kiếm, nghiên cứu và kết nối với các chương trình đào tạo việc làm để thăng tiến trong sự nghiệp của họ. Tìm hiểu về ấn phẩm CK