คำตอบอื่น ๆ ทั้งหมดและส่วนใหญ่เกี่ยวกับความเข้าใจในรายการนั้นยอดเยี่ยมมาก แต่เพื่ออธิบายข้อผิดพลาดของคุณ:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
a
เป็นสมาชิกของรายการของคุณไม่ใช่ดัชนี สิ่งที่คุณสามารถเขียนได้คือ:
[...]
for a in lines:
strip_list.append(a.strip())
ความคิดเห็นที่สำคัญอีกประการ: คุณสามารถสร้างรายการว่างด้วยวิธีนี้:
strip_list = [0] * 20
แต่สิ่งนี้ไม่มีประโยชน์มากนักเนื่องจากต่อ.append
ท้ายรายการของคุณ ในกรณีของคุณการสร้างรายการที่มีค่า defaut ไม่มีประโยชน์เนื่องจากคุณจะสร้างรายการต่อรายการเมื่อต่อท้ายสตริงที่ถูกขีดฆ่า
ดังนั้นรหัสของคุณควรเป็นดังนี้:
strip_list = []
for a in lines:
strip_list.append(a.strip())
แต่แน่นอนว่าสิ่งที่ดีที่สุดคืออันนี้เพราะนี่คือสิ่งเดียวกัน:
stripped = [line.strip() for line in lines]
ในกรณีที่คุณมีบางสิ่งที่ซับซ้อนกว่าเพียงแค่.strip
ใส่สิ่งนี้ในฟังก์ชันแล้วทำเช่นเดียวกัน นั่นเป็นวิธีที่อ่านง่ายที่สุดในการทำงานกับรายการ
strip_list
19 ครั้งแล้วต่อท้ายบรรทัดที่ถูกขีดฆ่า รหัสนั้นมีกลิ่นเหม็นมากเกี่ยวกับเรื่องนี้ นอกจากนี้หากคุณได้รับสิ่งนั้นจากไฟล์คุณควรจะลอกมันออกระหว่างทาง - การสร้างรายการขนาดใหญ่จากนั้นทุบตีเป็นรายการขนาดใหญ่อื่นไม่ใช่ความคิดที่ดี นอกจากนี้ 2 รหัสของคุณไม่ควรขึ้นอยู่กับการรู้ความยาวของคำ / บรรทัดที่ยาวที่สุด ย้อนกลับไปอีกนิด - คุณพยายามทำอะไรให้สำเร็จ? คุณจะทำอะไรกับstrip_list
?