0

使用列表推导与 for 循环递增变量时获得不同的结果

counter = 0
counter2 = 0
counter3 = 0

Items_lst = os.listdir()

lst = [i for i in Items_lst if os.path.isfile(i) and i != os.path.basename(__file__)]

for i in lst:
    counter += os.path.getsize(i)

counter2 = sum([os.path.getsize(i) for i in lst])

[counter3 := os.path.getsize(i) for i in lst]

print(counter)
print(counter2)
print(counter3)

输出:

5678203604   # counter
5678203604   # counter2
5421459456   # counter3

这里发生了什么?!!具体是:=做什么的??

4

1 回答 1

1

问题是 counter3 并没有真正计数。:= (“海象运算符”)仅分配;它不求和。见这里: https ://docs.python.org/3/whatsnew/3.8.html

于 2020-07-04T00:31:55.273 回答