Python For循环与列表理解有何不同?
我确实试着在网上理解和寻找答案,但我找不到一个关于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
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的人都会感谢您的解释。