python - 分配给显式变量时如何忽略某些元组成员?

标签 python python-2.7 perl

我是一名 Perl 人员,目前正在学习 Python。如果我有 Perl 中的列表,我可以将其值(成员)分配给显式变量,如下所示:

my ($a, $b, $c) = ('one', 'two', 'three');

现在$a == '一'$b == '二'$c == '三'。与 Python 非常相似。

如果我对例如不感兴趣第二个成员,我可以用 Perl 编写:

my ($a, undef, $c) = ('one', 'two', 'three');

现在$a == 'one',并且$c == ' Three'。没有$b'two' 被 Perl 简单地丢弃。这避免了发明无用的变量(在本例中是$b)和污染命名空间,我很欣赏这一点。

Python中有类似的习惯用法吗?

toople = (1, 2, 3)
a, None, c = toople

给出SyntaxError:无法分配给None,这对我来说听起来很合理。

有没有办法避免Python中的(无用的)变量b

除了命名空间污染之外,我还关心另一个问题:可读性和可维护性。当定义 b 时,潜在的维护者必须搜索使用 b 的位置(如果有的话)。一种解决方案是命名约定,例如 _unused_b。这是解决方案吗?

最佳答案

由于您按位置选择,因此要么采用特定元素

a, c = [ toople[i] for i in [0,2] ]

或排除其他

a, c = [ item for i, item in enumerate(toople) if i not in [1] ] 

这些使用list comprehensionenumerate

一种让人想起 Perl 的 undef 的方法是使用 _ 作为一次性变量,但正如评论中所述,这与国际化相冲突,其中 _可能正在使用。请参阅answers in this post .

关于python - 分配给显式变量时如何忽略某些元组成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43401974/

相关文章:

python - 帮助 Python 新手解决 Django 模型继承问题

python - 使用 pyinstaller 时出现错误 "has no attribute ' reduce_cython”

json - 解析 JSON 文件时出现 ", or } expected while parsing object/hash"错误

xml - 如何在Perl中比较不同元素的XML属性值

Python - 地球移动距离

python - 用 python 进行 sentiwordnet 评分

python - Python 中的常用日志记录模块

python-2.7 - Python 将变量保存到文件,类似于 MATLAB 中的 save()

python - 如何找到二维数组中每一行的最大值?

regex - 使用 Sed 获取开始字符和结束字符之间的所有字符