Python 当分配给显式变量时,如何忽略某些元组成员?

Python 当分配给显式变量时,如何忽略某些元组成员?,python,python-2.7,perl,Python,Python 2.7,Perl,我是一个Perl爱好者,目前正在学习Python。如果我在Perl中有一个列表,我可以将其值(成员)分配给显式变量,如下所示: my ($a, $b, $c) = ('one', 'two', 'three'); 现在,$a=='1',$b=='2',$c=='3'。非常类似于Python 如果我对第二个成员不感兴趣,我可以用Perl编写: my ($a, undef, $c) = ('one', 'two', 'three'); 现在,$a=='1',和$c=='3'。没有$b。Perl简

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

my ($a, $b, $c) = ('one', 'two', 'three');
现在,
$a=='1'
$b=='2'
$c=='3'
。非常类似于Python

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

my ($a, undef, $c) = ('one', 'two', 'three');
现在,
$a=='1'
,和
$c=='3'
。没有
$b
。Perl简单地丢弃了
'two'
。这避免了发明无用的变量(在本例中为
$b
)和污染名称空间,对此我表示赞赏

Python中有类似的习语吗

toople = (1, 2, 3)
a, None, c = toople
给出
SyntaxError:无法分配给None
,这听起来很合理

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


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

因为您可以选择“按位置”或“获取特定元素”

a, c = [ toople[i] for i in [0,2] ]
或者排除其他人

a, c = [ item for i, item in enumerate(toople) if i not in [1] ] 
这些使用和


一种让人想起Perl的
unde
的方法是将
用作一次性变量,但正如注释中所指出的,这与可能使用
的国际化冲突。请参阅。

您是否考虑过缩小右侧而不是拆下整个元组?@rth是的。但这在我的情况下是不可行的。我正在为一个第三方工具编写插件,我应该编写的函数给了我一个包含N个项目的元组,但我只对其中的一些项目感兴趣。如果你保存元组,你可以对它进行操作,就像这样
x=(1,2,3),a,B=x[:1]+x[2://code>,不是吗?但我知道这不好。numpy可以做一些奇特的事情,但只能用数字。
a,uu,c=toople
-是的,它只是用另一个名字
b
,但是
\uu
通常被认为是一个一次性变量名,你可以用la
a,u,u,e
@PerlDuck重复它-请注意,如果你正在进行国际化或本地化,
\u
通常已经在使用了(Hey zdim!:-)我不知道你也熟悉Python。尽管您的建议完全符合我的要求,但与Perl相比似乎过于复杂。但如果这是解决的办法,我会考虑的。我的元组只有很少的元素(5…15)。根据我的实际情况,我将使用您的解决方案或一些命名约定(如
\u no\b
)。嘿:))有一些方法可以对赋值进行“筛选”,但我不知道有什么方法可以与Perl的
未定义
。。。“占位符”(?我怎么称呼它:)。清单的理解力很好。对于连续索引(范围),切片当然更好。@PerlDuck I添加了另一种方法,它与排除一小部分特定索引更好地结合起来,并在
\uu
中添加了一个链接,指向一个关于它的好页面