Python append list nonetype

Tôi đã cố gắng sử dụng append[] trên một danh sách chỉ để nhận ra rằng tôi không thể cắt nó vì nó không phải là loại. Tôi nghĩ append chỉ thay đổi nội dung danh sách. Tôi hoang mang không biết mình đã làm gì sai vì tôi không thể in nó ngay cả sau khi nối thêm. Vì vậy, tôi đã tìm kiếm, thấy trên StackOverflow rằng danh sách + danh sách đó tốt hơn, giữ nguyên danh sách và tất cả. Đó thực sự là một tuyên bố chung của sự thật? . Cảm ơn bạn. Tôi đã làm một bài tập chuyển đổi cơ sở. Ở đây bạn có thể thấy cách tôi phải sử dụng +. Tôi thậm chí không thể biết liệu tôi có quên làm điều gì đó với append mà tôi đã từng làm trong các bài tập trước đây của mình hay không. Tôi cũng có thể sử dụng một số lời khuyên về bình luận ngắn gọn và chính xác. tôi hút nó. https. //mã số. tự học. com/c9l8zpAzr0VE/?ref=app

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

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ến

Mộ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ển

print[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ôi

books = 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]
1

books.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]
0

Mã 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

Chủ Đề