如何在列表推导中避免声明未使用的变量?
如果我有一个列表推导式(比如说)像这样:
['' for x in myList]
这个操作实际上是创建一个新列表,里面每个元素都是一个空字符串,而我从来没有用到这个x
。有没有更简洁的写法,这样我就不用声明这个没用的x
变量了呢?
10 个回答
13
原来,使用以 dummy*
开头的变量名(比如 dummy)和用 _
是一样的效果。_
是一个大家都知道的标准,但其实用一些有意义的变量名会更好。所以你可以用 dummy
、dummy1
或者 dummy_anything
这些名字。这样用这些变量名的话,PyLint
就不会有意见了。
19
不可以。正如Zen所说:特殊情况并不足以打破规则。这里的特殊情况是指循环中没有使用到正在遍历的东西,而规则是有一个“目标”可以解包。
不过,你可以把_
当作变量名来用,通常大家都明白这表示“故意不使用”。就连PyLint等工具也知道并尊重这一点。
148
_
是一个标准的占位符名称,用来表示在 for 循环和元组赋值中被忽略的成员,比如说:
['' for _ in myList]
[a+d for a, _, _, d, _ in fiveTuples]
顺便说一下,你的列表可以不使用列表推导式来写(假设你想要创建一个包含不可变成员,比如字符串、整数等的列表)。
[''] * len(myList)