質問

私は、Pythonの初心者です。 3タプルを返す関数str.partition()を考えます。私は唯一の要素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]

この特定のケースでは、それは他の人への素敵な難読化していません。 ;)

私はいくつかの時間前に尋ねた質問はあなたを助けることができると思います:

行列の一部の行を取得するには、

Python的な方法

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]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top