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

2024-04-24 19:55:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在$a == 'one'$b == 'two'$c == 'three'。非常类似于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

对我来说这听起来很合理。你知道吗

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

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


Tags: 名称none列表my空间成员oneperl
1条回答
网友
1楼 · 发布于 2024-04-24 19:55:10

因为你选择了按位置或者采取特定的元素

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。你知道吗

相关问题 更多 >