Skip to main content
 首页 » 编程设计

python之如何解决 Python 中的 i++ 循环错误

2025年05月04日15langtianya

我当前的代码出现以下错误:IndexError: list index out of range 所以我想知道是否有任何方法可以在 Python 中使用类似于 i++ for 循环的 java 代码打印“名称” + 来自列表的 iten,用于列表中的每个 iten,位置均匀。

抱歉,如果这看起来有点令人困惑,但作为初学者很难解释某些事情:p

例如:

i = 0 
"name" + list[0] 
i = 1 
"price" + list[1] 
i = 2 
"name" + list[2] 

代码:

    import pickle 
 
 
list1 = [] 
ans = " " 
 
class Product: 
    def __init__(self, name, price): 
        self.name = name 
        self.price = price 
 
 
while ans != 'no': 
    ans = input("Would you like to add a new product, 'yes' or 'no': ") 
    if ans == 'no': 
        break 
    if ans == 'yes': 
        name = input("What is your product name?") 
        price = input("What is your product price?") 
        list1.append(name) 
        list1.append(price) 
 
 
output = open("save1.pkl", 'wb') 
pickle.dump(list1, output,pickle.HIGHEST_PROTOCOL) 
 
output.close() 
 
print(" ") 
 
inputFile = open("save1.pkl", 'rb') 
list2 = pickle.load(inputFile) 
inputFile.close() 
 
for i in range(0,10): 
    print("Name:" + list2[i] + " " + "Price:" + list2[i + 1]) 

请您参考如下方法:

看起来你有一个列表,其中所有偶数索引都是name,奇数索引是price .您不希望或不需要在此处建立索引,因为 Python 对此问题的解决方案比 C 好得多。您可以将扩展切片与 zip 相结合,以在本地成对地迭代它们:

for name, price in zip(list2[::2], list2[1::2]): 
    print("Name:" + name + " " + "Price:" + price) 

list2[::2] 获取从头到尾的所有其他元素,而 list2[1::2] 获取从索引 1 到结束。 zip 然后从每个切片返回成对值的 tuple,因此您可以在索引 0 和 1 处获得值作为您的第一个 name 和 price、2 和 3 给出您的第二个 name 和 price 等。我们在循环本身中将它们解压缩为有意义的名称,而不是使用索引list2 具有神秘的含义,很明显我们已经有了名称和价格。