Python 如何将(:=运算符)用于的循环?

Python 如何将(:=运算符)用于的循环?,python,Python,为什么这个代码是假的?它说:“SyntaxError:无效语法” 如何将(:=运算符)用于的循环 for j in x := list(zip(*[re.split("\W+",open(sys.argv[1],'r',encoding="utf-8").read().lower())[i:] for i in range(int(sys.argv[2]))])): d = {j: x.count(j) for j in set(x)} [print(

为什么这个代码是假的?它说:“SyntaxError:无效语法” 如何将(:=运算符)用于的循环

for j in x := list(zip(*[re.split("\W+",open(sys.argv[1],'r',encoding="utf-8").read().lower())[i:] for i in range(int(sys.argv[2]))])):
 d = {j: x.count(j) for j in set(x)}

[print(" ".join(k)+" "+str(d.get(k))+"\n") for k in sorted(d) if d.get(k)==int(sys.argv[3]) and re.search("^\w{"+sys.argv[4]+"} (.+ )?\w{"+sys.argv[5]+"}$"," ".join(k))]


您需要在Walrus操作符中使用括号

这很有效

for x in (y := [1, 2, 3]):
    print(x)
但事实并非如此

for x in y := [1, 2, 3]:
    print(x)

但是,你应该考虑重构你的代码。在循环中一遍又一遍地重新分配给

d
似乎没有任何意义,而预先计算
set(x)

会更有效。如果在代码中发现错误时遇到困难,应该尝试将其分解为多个部分,而不是在一行中运行所有内容。这将使它更具可读性和“可读性很重要。”——蟒蛇之禅你希望用它实现什么?@amdzazda你可以接受他的答案,如果它有助于你点击他答案左侧下方的“向下投票”选项下面的勾号