如何在Python中创建无需预定义长度的数组,实现逆序存储CSV文件行?
你提供的测试代码运行会直接抛出IndexError,因为空列表不支持通过负索引直接赋值,只有列表中已存在对应索引位置的元素时,才能通过索引修改该位置的值。
认知纠正
Python列表的append()方法本身就是将新元素插入到数组的最后一位,并不是插入到首位,插入到列表首位的方法是insert(0, 元素)。Python内置的列表属于动态数组结构,无需预先指定长度,会自动根据存储的元素数量扩容,完全不需要提前获知CSV的总行数。
实现方案1:先顺序追加再反转(推荐)
该方案可读性更高,维护成本低,适合绝大多数场景:
from csv import reader reverse_rows = [] with open("ccc.csv", "r", encoding="utf-8") as f: csv_reader = reader(f) for row in csv_reader: # 按读取顺序追加到列表末尾 reverse_rows.append(row) # 直接反转列表得到逆序结果 reverse_rows = reverse_rows[::-1]
实现方案2:读取时直接插入列表头部
不需要额外反转步骤,读完直接得到逆序结果:
from csv import reader reverse_rows = [] with open("ccc.csv", "r", encoding="utf-8") as f: csv_reader = reader(f) for row in csv_reader: # 新读取的行插入列表首位,最终列表天然为逆序 reverse_rows.insert(0, row)
内容的提问来源于stack exchange,提问作者user16713791
相关产品推荐
相关产品推荐

