如何挑选一个函数,返回x元组的某些元素?
-
19-09-2019 - |
题
我是新手到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]
在这种特殊情况下,但是这混淆和对他人的不好听。 ;)
我认为我提出的问题前一段时间可以帮助你:
NumPy的给你,你想用一个元组或索引列表中提取各种元素切片的语法,但我不认为你想你的字符串列表转换为numpy.array只提取少量元素,所以也许你可以写一个帮手:
def extract(lst, *indices):
return [lst[i] for i in indices]
item0, item2 = extract(str.partition(' '), 0, 2)
您也可以使用str.split(' ', 1)
代替str.partition(' ')
你会得到一个列表,而不是一个元组,但你不会得到分离回
这是我会怎么做:
all_parts = str.partition(' ')
part0, part2 = all_parts[0], all_parts[2]
不隶属于 StackOverflow