Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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循环与列表理解有何不同?_Python_For Loop_List Comprehension - Fatal编程技术网

Python For循环与列表理解有何不同?

Python For循环与列表理解有何不同?,python,for-loop,list-comprehension,Python,For Loop,List Comprehension,我确实试着在网上理解和寻找答案,但我找不到一个关于for循环与列表理解有什么不同的清晰的和简单的解释。下面是一个我认为会返回相同内容的示例,但它没有返回 给定一组数字,返回每个元素的倒数。每一个积极因素都会变成消极因素,消极因素也会变成积极因素 a_list = [1, 2, -3, 4, 5] for循环 def invert(a_list): for x in a_list: return -x invert(a_list) -1 而在列表中 def inver

我确实试着在网上理解和寻找答案,但我找不到一个关于for循环与列表理解有什么不同的清晰的简单的解释。下面是一个我认为会返回相同内容的示例,但它没有返回

给定一组数字,返回每个元素的倒数。每一个积极因素都会变成消极因素,消极因素也会变成积极因素

a_list = [1, 2, -3, 4, 5]
for循环

def invert(a_list):
    for x in a_list:
        return -x

invert(a_list)
-1
而在列表中

def invert(a_list):
    return [-x for x in a_list]

invert(a_list)
[-1, -2, 3, -4, -5]
我感谢任何解释,我仍然有点困惑,什么时候使用一个或另一个。
谢谢大家!

您的两个函数做的事情不一样。在第一个示例中,在迭代循环之前返回,因此只返回一个项。第二个示例返回完整的新列表

你需要做更多类似的事情:

a_list = [1, 2, -3, 4, 5]

def invert_one(a_list):
    invert_list = []
    for x in a_list:
        invert_list.append(-x)
    return invert_list

def invert_two(a_list):
    return [-x for x in a_list]

print(invert_one(a_list))
[-1, -2, 3, -4, -5]

print(invert_two(a_list))
[-1, -2, 3, -4, -5]

1/a for循环是一种通用的循环方法,您可以在循环中执行任何操作,并且它可以包含许多行代码。 微积分, 印刷, 正在调用其他函数

2/列表理解的目标是生成列表对象, 它通常是一行,用于使书写和阅读简洁

3/在您的示例中,您并没有真正循环,因为您返回了第一个迭代值:-x 您不允许第二次迭代附加

如果您想要完全相同的行为:

a_list = [1, 2, -3, 4, 5]
inverted = [-x for x in a_list]
print(inverted)
结果是否与以下相同:

a_list = [1, 2, -3, 4, 5]
inverted = []
for x in a_list:
    inverted.append(-x)
print(inverted)

优点:这里的列表理解写起来比较短,因为这个列表很容易写。所以这两种方法都可以在这里使用,但是当你可以做的时候,把它作为列表理解写出来会更容易,也很好。

这与for loop vs list comp无关,这一切都是关于弄乱for循环代码的。for循环不仅仅是理解一个列表,而列表理解不是一行for循环谢谢。我相信每个学习Python的人都会感谢您的解释。