รายการสามารถต่อกับรายการอื่นได้ ซึ่งหมายความว่าคุณสามารถเพิ่มเนื้อหาของรายการหนึ่งไปยังอีกรายการหนึ่งได้ ค่าที่มีข้อมูลประเภทอื่น เช่น จำนวนเต็ม ไม่สามารถรวมเข้ากับรายการได้
หากคุณพยายามเชื่อมจำนวนเต็มเข้ากับรายการ ล่าม Python จะส่งกลับข้อผิดพลาด “TypeError:can only concatenate list (ไม่ใช่ “int”) เพื่อแสดงรายการ”
ในคู่มือนี้ เราจะพูดถึงความหมายของข้อผิดพลาดนี้และวิธีการทำงาน เราอธิบายตัวอย่างเพื่อช่วยคุณในการแก้ไขปัญหานี้ในโค้ดของคุณ
TypeError:เชื่อมได้เฉพาะรายการ (ไม่ใช่ “int”) กับรายการ
การต่อกันทำให้ง่ายต่อการเพิ่มสองรายการเข้าด้วยกัน ในขณะที่คุณสามารถใช้เมธอด expand() เพื่อเพิ่มรายการไปยังรายการอื่น การต่อข้อมูลต้องใช้เพียงสัญลักษณ์เดียวเท่านั้น:เครื่องหมายบวก (+)
รายการไม่ใช่วัตถุเดียวที่สามารถต่อกันได้ ออบเจ็กต์ที่ทำซ้ำได้ เช่น พจนานุกรมหรือทูเพิล สามารถต่อกันได้
ไม่สามารถเชื่อมวัตถุสองชนิดที่มีข้อมูลต่างกันได้ ซึ่งหมายความว่าคุณไม่สามารถเชื่อมรายการกับพจนานุกรมหรือจำนวนเต็มกับรายการได้
คุณพบ “TypeError:can only concatenate list (ไม่ใช่ “int”) to list” ถ้าคุณใช้ concatenation เพื่อเพิ่มรายการจำนวนเต็มเดียวลงในรายการ
ตัวอย่างสถานการณ์
เรากำลังจะสร้างโปรแกรมที่ติดตามว่ามีการสั่งซื้อแซนวิชที่ร้านกาแฟในวันศุกร์จำนวนเท่าใด เราต้องการกรองแซนวิชทั้งหมดที่มีการสั่งซื้อมากกว่า 75 ครั้งออกไป เพื่อให้เราเห็นว่าแซนวิชชิ้นไหนได้รับความนิยมมากที่สุด
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
เราเริ่มต้นด้วยการกำหนดสองรายการ:รายการแซนวิชและรายการที่มีการสั่งซื้อแซนวิชแต่ละรายการ
sandwiches = ["Egg and Cress", "Chicken Club", "Hummus and Tomato", "Cheese"] orders = [54, 77, 22, 98]
รายการของเราถูกกำหนดให้กับตัวแปร "แซนวิช" และ "คำสั่ง" ต่อไป เรากำหนดรายการที่ติดตามหมายเลขดัชนีของแซนวิชที่มีการสั่งซื้อมากกว่า 75 ครั้ง
orders_75 = []
ในขณะนี้ รายการเหล่านี้ว่างเปล่า นี่เป็นเพราะเรายังไม่ทราบว่าแซนวิชชิ้นไหนถูกสั่งไปมากกว่า 75 ครั้งแล้ว
ต่อไป เราทบทวนรายการแซนวิชและคำสั่งซื้อของเราเพื่อดูว่ามีการสั่งซื้อแซนวิชใดบ้างมากกว่า 75 ครั้ง เราสามารถทำได้โดยใช้ for loop:
for s in range(0, len(sandwiches)): if orders[s] > 75: orders_75 = orders_75 + s
รหัสของเราวนซ้ำในแต่ละตัวเลขในช่วง 0 และความยาวของรายการ "แซนวิช" หากค่าที่สอดคล้องกันในรายการ "คำสั่งซื้อ" สำหรับแซนวิชมากกว่า 75 เราจะเพิ่มตำแหน่งดัชนีของแซนวิชนั้นลงในรายการ "orders_75"
ต่อไป เราเขียน for loop ที่พิมพ์ว่าแซนวิชชิ้นใดได้รับคำสั่งมากกว่า 75 ครั้งเพื่อตรวจสอบว่าโปรแกรมของเราทำงานหรือไม่:
for o in orders_75: print(sandwiches[o])
เรียกใช้โค้ด Python ของเราแล้วดูว่าเกิดอะไรขึ้น:
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
รหัสของเราส่งคืนข้อผิดพลาด
การแก้ปัญหา
ดูบรรทัดรหัสที่กล่าวถึงในข้อความแสดงข้อผิดพลาดของเรา:
orders_75 = orders_75 + s
เรากำลังพยายามเชื่อมค่าจำนวนเต็มเข้ากับรายการของเรา เราไม่สามารถทำเช่นนี้ได้เนื่องจากการต่อเชื่อมใช้งานได้กับวัตถุที่ทำซ้ำได้ของประเภทข้อมูลเดียวกันเท่านั้น
เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องใช้ append()
วิธีการเพิ่มรายการในรายการของเรา วิธีนี้ได้รับการออกแบบมาโดยเฉพาะเพื่อเพิ่มรายการลงในรายการ รายการอาจเป็นประเภทข้อมูลใดก็ได้ เช่น พจนานุกรม จำนวนเต็ม หรือเลขทศนิยม
เปลี่ยนบรรทัดของรหัส orders_75 ของเราเพื่อใช้ append()
กระบวนการ:
orders_75.append(s)
เราไม่จำเป็นต้องกำหนดค่าใดๆ ให้กับ “orders_75” เนื่องจาก append()
วิธีเพิ่มรายการในรายการในตำแหน่ง มารันโค้ดของเรากัน:
Chicken Club Cheese
รหัสของเราพิมพ์รายการแซนวิชที่มีการสั่งซื้อมากกว่า 75 ครั้ง มีแซนวิช 2 ชิ้นที่ตรงตามเกณฑ์นี้:คลับไก่และชีส
บทสรุป
ข้อผิดพลาด “TypeError:can only concatenate list (ไม่ใช่ “int”) to list” จะปรากฏขึ้นเมื่อคุณพยายามเชื่อมจำนวนเต็มเข้ากับรายการ
ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากเฉพาะรายการเท่านั้นที่สามารถเชื่อมกับรายการได้ เพื่อแก้ไขข้อผิดพลาดนี้ ใช้ append()
วิธีการเพิ่มรายการลงในรายการ
ตอนนี้คุณพร้อมที่จะแก้ไขข้อผิดพลาดของ Python อย่างมืออาชีพแล้ว!