Danh sách có thể được nối với các danh sách khác. Điều này có nghĩa là bạn có thể thêm nội dung của danh sách này vào danh sách khác. Các giá trị với các kiểu dữ liệu khác, chẳng hạn như số nguyên, không thể được nối với một danh sách.
Nếu bạn cố gắng nối một số nguyên với một danh sách, trình thông dịch Python sẽ trả về lỗi “TypeError:chỉ có thể nối danh sách (không phải“ int ”) với danh sách”.
Trong hướng dẫn này, chúng tôi nói về lỗi này có nghĩa là gì và nó hoạt động như thế nào. Chúng tôi xem qua một ví dụ để giúp bạn tìm cách khắc phục sự cố này trong mã của bạn.
TypeError:chỉ có thể nối danh sách (không phải "int") với danh sách
Kết nối giúp dễ dàng thêm hai danh sách với nhau. Mặc dù bạn có thể sử dụng phương thức expand () để thêm một danh sách vào một danh sách khác, việc nối chỉ yêu cầu sử dụng một ký hiệu:dấu cộng (+).
Danh sách không phải là đối tượng duy nhất có thể được nối với nhau. Bất kỳ đối tượng có thể lặp lại nào, chẳng hạn như từ điển hoặc một bộ, đều có thể được nối.
Hai đối tượng của các kiểu dữ liệu khác nhau không thể được nối với nhau. Điều này có nghĩa là bạn không thể nối danh sách với từ điển hoặc một số nguyên với danh sách.
Bạn gặp phải lỗi “TypeError:chỉ có thể nối danh sách (không phải“ int ”) thành danh sách” nếu bạn sử dụng phép nối để thêm một mục số nguyên vào danh sách.
Một tình huống mẫu
Chúng tôi sẽ xây dựng một chương trình theo dõi số lượng đơn hàng đã được đặt cho các loại bánh mì sandwich cụ thể tại một quán cà phê vào thứ Sáu. Chúng tôi muốn lọc ra tất cả các loại bánh mì đã được đặt hàng hơn 75 lần để có thể xem loại bánh mì nào được yêu thích nhất.
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Chúng ta bắt đầu bằng cách xác định hai danh sách:một danh sách bánh mì và một danh sách chứa bao nhiêu đơn hàng đã được đặt cho mỗi chiếc bánh mì.
sandwiches = ["Egg and Cress", "Chicken Club", "Hummus and Tomato", "Cheese"] orders = [54, 77, 22, 98]
Danh sách của chúng tôi được gán cho các biến "bánh mì" và "đơn đặt hàng". Tiếp theo, chúng tôi xác định một danh sách theo dõi số chỉ mục của bánh mì sandwich đã được đặt hàng hơn 75 lần.
orders_75 = []
Hiện tại, các danh sách này đang trống. Điều này là do chúng tôi vẫn chưa tìm ra loại bánh mì nào đã được đặt hàng hơn 75 lần.
Tiếp theo, chúng tôi xem lại danh sách các loại bánh mì và đơn đặt hàng để tìm ra loại bánh mì đã được đặt hàng hơn 75 lần. Chúng ta có thể làm điều này bằng cách sử dụng vòng lặp for:
for s in range(0, len(sandwiches)): if orders[s] > 75: orders_75 = orders_75 + s
Mã của chúng tôi lặp lại từng số trong phạm vi 0 và độ dài của danh sách "bánh mì". Nếu giá trị tương ứng trong danh sách "đơn đặt hàng" cho một chiếc bánh sandwich lớn hơn 75, chúng tôi thêm vị trí chỉ mục của chiếc bánh sandwich đó vào danh sách "order_75".
Tiếp theo, chúng tôi viết một vòng lặp for in ra bánh mì sandwich nào đã được đặt hàng hơn 75 lần để kiểm tra xem chương trình của chúng tôi có hoạt động hay không:
for o in orders_75: print(sandwiches[o])
Hãy chạy mã Python của chúng tôi và xem điều gì sẽ xảy ra:
Traceback (most recent call last): File "main.py", line 9, in <module> orders_75 = orders_75 + s TypeError: can only concatenate list (not "int") to list
Mã của chúng tôi trả về lỗi.
Giải pháp
Hãy xem dòng mã được đề cập trong thông báo lỗi của chúng tôi:
orders_75 = orders_75 + s
Chúng tôi đang cố gắng nối một giá trị số nguyên vào danh sách của mình. Chúng ta không thể làm điều này vì phép nối chỉ hoạt động trên các đối tượng có thể lặp lại của cùng một kiểu dữ liệu.
Để giải quyết lỗi này, chúng ta phải sử dụng append()
phương pháp để thêm một mục vào danh sách của chúng tôi. Phương pháp này được thiết kế đặc biệt để thêm các mục vào danh sách. Các mục có thể thuộc bất kỳ kiểu dữ liệu nào, chẳng hạn như từ điển, số nguyên hoặc số dấu phẩy động.
Thay đổi dòng mã order_75 của chúng tôi để sử dụng append()
phương pháp:
orders_75.append(s)
Chúng tôi không cần chỉ định bất kỳ giá trị nào cho “order_75” vì append()
phương pháp thêm một mục vào danh sách tại chỗ. Hãy thực thi mã của chúng tôi:
Chicken Club Cheese
Mã của chúng tôi in ra danh sách các loại bánh mì sandwich đã được đặt hàng hơn 75 lần. Có hai tiệm bánh mì đáp ứng tiêu chí này:Chicken Club và Cheese.
Kết luận
Lỗi “TypeError:chỉ có thể nối danh sách (không phải“ int ”) với danh sách” xuất hiện khi bạn cố gắng nối một số nguyên với một danh sách.
Lỗi này được đưa ra bởi vì chỉ danh sách có thể được nối với danh sách. Để giải quyết lỗi này, hãy sử dụng append()
phương pháp để thêm một mục vào danh sách.
Bây giờ bạn đã sẵn sàng để giải quyết lỗi Python này như một chuyên gia!