Python 这些代码行的区别和用途是什么?
第一行代码:Python 这些代码行的区别和用途是什么?,python,Python,第一行代码: for i in list: print(i) print(i for i in list) 第二行代码: for i in list: print(i) print(i for i in list) 我将使用它们中的每一个做什么?第一个代码片段将在您的列表中迭代,并为循环的每一次传递打印I的值。在大多数情况下,您会希望使用类似的方式打印列表中的值: my_list = list(range(5)) for i in my_list: print(i)
for i in list:
print(i)
print(i for i in list)
第二行代码:
for i in list:
print(i)
print(i for i in list)
我将使用它们中的每一个做什么?第一个代码片段将在您的列表中迭代,并为循环的每一次传递打印I的值。在大多数情况下,您会希望使用类似的方式打印列表中的值:
my_list = list(range(5))
for i in my_list:
print(i)
第二个代码段将计算print语句中的表达式并打印结果。由于print语句中的表达式,i for i in my_list
的计算结果为生成器表达式,因此将输出该生成器表达式的字符串表示形式。我想不出任何现实世界的情况下,这是你想要的结果
my_list = list(range(5))
print(i for i in my_list)
针对(自编辑后)提出的答案:
>x=[1,2,3,4,5]
>>>打印(x中i代表i)
第二个是打印生成器对象,因为(i代表x中的i)
是生成器。第一个代码片段只是一次打印一个列表中的元素
>>> g=(i for i in range(4))
>>> print(g)
<generator object <genexpr> at 0x100f015d0>
>>> print(next(g))
0
>>>
>>> print(next(g))
1
>>> print(next(g))
2
>>> print(next(g))
3
>>> print(next(g))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> g=(i for i in range(4))
>>> for i in g:
... print(i)
...
0
1
2
3
>>> for i in g:
... print(i)
...
>>>
>>>
顺便说一句:不要使用
list
作为变量名。它是Python中内置类型的名称,因此当您将其用作变量名时,您将覆盖该类型的构造函数。基本上,您正在删除内置的list()
函数。您可以自己看到其中的区别。
第一个循环遍历范围
,然后打印整数
>>> for i in range(4):
... print(i)
...
0
1
2
3
第二个是生成器表达式
>>> print(i for i in range(4))
<generator object <genexpr> at 0x10b6c20f0>
第二个是生成器表达式。如果将生成器表达式转换为列表理解,则两者将给出相同的结果。简而言之,列表理解用于提高内存和执行效率。然而,它们通常适用于小代码块,通常为一到两行
有关更多信息,请参见python官方网站上的此链接-第一种方法是循环遍历列表并逐个打印元素:
l = [1, 2, 3]
for i in l:
print(i)
输出:
1
2
3
[1, 2, 3]
1
[2, 3]
第二种方法,列表理解
,创建一个可存储的iterable(列表、字典等)
输出:
1
2
3
[1, 2, 3]
1
[2, 3]
第二个用于对所有元素执行1项操作,例如,将所有元素从字符串转换为int:
l = ['1', '2', '3']
l = [int(i) for i in l] #now the list is [1, 2, 3]
循环更适合做很多事情:
for i in range(4):
#Code
#more code
#lots of more code
pass
不是想用列表作为变量,而是说“一些列表”。。。应该把它放在这里。