我是新手到Python。考虑函数str.partition()返回一个3元组。如果我感兴趣的只是元素0和这个元组的2,什么是选择只有某些元素进行这样的元组的最佳方式?

我目前可以做之一:

# Introduces "part1" variable, which is useless
(part0, part1, part2) = str.partition(' ')

或者:

# Multiple calls and statements, again redundancy
part0 = str.partition(' ')[0]
part2 = str.partition(' ')[2]

我想能够做的的东西的这个样子,但不能:

(part0, , part2) = str.partition(' ')
# Or:
(part0, part2)   = str.partition(' ')[0, 2]
有帮助吗?

解决方案

下划线经常被用来作为东西你并不需要一个名字,所以像这样的工作:

part0, _, part2 = str.partition(' ')

在这种特殊情况下,你可以这样做,但它不是一个漂亮的解决方案:

part0, part2 = str.partition(' ')[::2]

一个更深奥的溶液:

from operator import itemgetter
part0, part2 = itemgetter(0, 2)(str.partition(' '))

其他提示

正确的,你不能把一些特设的元素出来的元组的列表中一气呵成。

part0, part1, part2 = str.partition(' ')

时的路要走。不要担心part1的,如果你不需要它,你不需要它。这是共同地称之为“虚拟”或“未使用”以表明它不被使用。

可以是难看用:

part0, part2 = str.partition(' ')[::2]

在这种特殊情况下,但是这混淆和对他人的不好听。 ;)

您也可以使用str.split(' ', 1)代替str.partition(' ')

你会得到一个列表,而不是一个元组,但你不会得到分离回

这是我会怎么做:

all_parts = str.partition(' ')
part0, part2 = all_parts[0], all_parts[2]
scroll top