如何绕过在for循环中声明一个未使用的变量?

Ram*_*amy 72 python list-comprehension

如果我有一个列表理解(例如)像这样:

['' for x in myList]
Run Code Online (Sandbox Code Playgroud)

有效地为列表中的每个元素创建一个具有空字符串的新列表,我从不使用x.有没有更简洁的方法来写这个,所以我不必声明未使用的x变量?

ken*_*ytm 112

_ 是for循环和元组赋值中被忽略的成员的标准占位符名称,例如

['' for _ in myList]

[a+d for a, _, _, d, _ in fiveTuples]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你的列表可以在没有列表理解的情况下编写(假设你想要创建一个不可变成员列表,如字符串,整数等).

[''] * len(myList)
Run Code Online (Sandbox Code Playgroud)

  • 后者必须伴随着一个巨大的警告,即它不会对可变对象做出预期的事情. (9认同)
  • @Mohit:`a = [[]]*4; a [0] .append(5); print(a)` (4认同)
  • @Ramy,Python为内存中的同一对象维护相同的引用. (2认同)

小智 19

没有.正如禅宗所说:特殊情况不足以打破规则.特殊情况是循环不使用被迭代的东西的项目,并且规则是有一个"目标"来解包.

但是,您可以使用_变量名称,通常被理解为"故意不使用"(甚至PyLint等也知道并尊重这一点).


Alf*_*red 12

事实证明,使用dummy*(起始单词为虚拟)作为变量名称具有相同的技巧_._是一个已知的标准,最好使用有意义的变量名称.所以,你可以使用dummy,dummy1,dummy_anything.通过使用这些变量名称PyLint不会抱怨.