如何在列表推导中避免声明未使用的变量?

101 投票
10 回答
40388 浏览
提问于 2025-04-16 14:40

如果我有一个列表推导式(比如说)像这样:

['' for x in myList]

这个操作实际上是创建一个新列表,里面每个元素都是一个空字符串,而我从来没有用到这个x。有没有更简洁的写法,这样我就不用声明这个没用的x变量了呢?

10 个回答

13

原来,使用以 dummy* 开头的变量名(比如 dummy)和用 _ 是一样的效果。_ 是一个大家都知道的标准,但其实用一些有意义的变量名会更好。所以你可以用 dummydummy1 或者 dummy_anything 这些名字。这样用这些变量名的话,PyLint 就不会有意见了。

19

不可以。正如Zen所说:特殊情况并不足以打破规则。这里的特殊情况是指循环中没有使用到正在遍历的东西,而规则是有一个“目标”可以解包。

不过,你可以把_当作变量名来用,通常大家都明白这表示“故意不使用”。就连PyLint等工具也知道并尊重这一点。

148

_ 是一个标准的占位符名称,用来表示在 for 循环和元组赋值中被忽略的成员,比如说:

['' for _ in myList]

[a+d for a, _, _, d, _ in fiveTuples]

顺便说一下,你的列表可以不使用列表推导式来写(假设你想要创建一个包含不可变成员,比如字符串、整数等的列表)。

[''] * len(myList)

撰写回答