Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 这些代码行的区别和用途是什么?_Python - Fatal编程技术网

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
    

    不是想用列表作为变量,而是说“一些列表”。。。应该把它放在这里。