Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python for循环中的语句在使用';列表(zip_变量)和#x27;,但在使用'之前打印;列表(zip_变量)和x27;_Python_Python 3.x - Fatal编程技术网

Python for循环中的语句在使用';列表(zip_变量)和#x27;,但在使用'之前打印;列表(zip_变量)和x27;

Python for循环中的语句在使用';列表(zip_变量)和#x27;,但在使用'之前打印;列表(zip_变量)和x27;,python,python-3.x,Python,Python 3.x,正在打印“使用列表前您好(zip_shop)” 未打印“使用列表后您好(zip_shop)”语句 有人能帮我理解这里的行为吗 输出如下: groceries = ['apple', 'chips', 'bread', 'icecream'] and price = [2, 3, 1.2, 4.25] zip_shop = <zip object at 0x0000022852A29948> and type(zip_shop) = <class 'zip'> and i

正在打印“使用列表前您好(zip_shop)”

未打印“使用列表后您好(zip_shop)”语句

有人能帮我理解这里的行为吗

输出如下:

groceries =  ['apple', 'chips', 'bread', 'icecream'] and price = [2, 3, 1.2, 4.25]
zip_shop = <zip object at 0x0000022852A29948> and type(zip_shop) = <class 'zip'> and id(zip_shop) =  2372208335176
Hello before using list(zip_shop)
Hello before using list(zip_shop)
Hello before using list(zip_shop)
Hello before using list(zip_shop)
list(zip_shop)= [] and type(zip_shop) = <class 'zip'> and id(zip_shop) = 2372208335176

Process finished with exit code 0
groceries=['apple','chips','bread','icecream']和price=[2,3,1.2,4.25]
zip_shop=和类型(zip_shop)=和id(zip_shop)=2372208335176
使用列表前的您好(zip_商店)
使用列表前的您好(zip_商店)
使用列表前的您好(zip_商店)
使用列表前的您好(zip_商店)
列表(拉链店)=[]和类型(拉链店)=和id(拉链店)=2372208335176
进程已完成,退出代码为0

在Python 3中,
zip
函数生成一个迭代器,只能使用一次,您必须将其转换为
列表

zip_shop = list(zip(groceries, price))

在Python 3中,
zip
函数生成一个迭代器,只能使用一次,您必须将其转换为
列表

zip_shop = list(zip(groceries, price))

您以错误的方式使用zip对象。Zip对象迭代器是惰性求值的,这意味着它们只在被调用时才被求值,并且不会多次求值,这避免了对Zip对象的重复求值。当需要迭代时,必须为迭代对象调用Zip()

groceries = ["apple","chips","bread","icecream"]
price = [2,3,1.2,4.25]
print("groceries = ",groceries,"and price =",price)

#zip_shop = zip(groceries,price)

for g, p in zip(groceries,price):
    print("Hello before using list(zip_shop)")

print("List:",list(zip(groceries,price)))

for g, p in zip(groceries,price):
    print("Hello after using list(zip_shop)")

您以错误的方式使用zip对象。Zip对象迭代器是惰性求值的,这意味着它们只在被调用时才被求值,并且不会多次求值,这避免了对Zip对象的重复求值。当需要迭代时,必须为迭代对象调用Zip()

groceries = ["apple","chips","bread","icecream"]
price = [2,3,1.2,4.25]
print("groceries = ",groceries,"and price =",price)

#zip_shop = zip(groceries,price)

for g, p in zip(groceries,price):
    print("Hello before using list(zip_shop)")

print("List:",list(zip(groceries,price)))

for g, p in zip(groceries,price):
    print("Hello after using list(zip_shop)")

如果是这样的话,如果我对第一个循环进行注释,它不应该打印第二个循环的语句吗?(我已经试过了,它没有打印第二个循环的语句)但是你在第二个循环之前做了一个
列表(zip_shop)
。那么,如果我想在问题的场景中打印两个循环的语句,我该怎么做呢?@Lokeshwartilor正如georgexsh已经告诉你的,在python3
zip
中生成一个迭代器,因此,第一个显式(
for
)或隐式(
list(…)
)循环将使用迭代器。如果你想不止一次地使用它,你必须首先从中构建一个列表,然后在该列表上迭代。如果是这样,如果我对第一个循环进行注释,它不应该打印第二个循环的语句吗?(我已经试过了,它没有打印第二个循环的语句)但是你在第二个循环之前做了一个
列表(zip_shop)
。那么,如果我想在问题的场景中打印两个循环的语句,我该怎么做呢?@Lokeshwartilor正如georgexsh已经告诉你的,在python3
zip
中生成一个迭代器,因此,第一个显式(
for
)或隐式(
list(…)
)循环将使用迭代器。如果您想不止一次地使用它,您必须首先从中构建一个列表,然后迭代该列表。