2017-06-21 7 views
2

特定の部分文字列の開始インデックスと終了インデックスを格納する必要があります。私はこれをPythonで行う必要があります。ペアのC++ベクタに相当するPythonは何ですか?Pythonのペアのベクトル

+0

が重複する可能性をコンテナ](https://stackoverflow.com/questions/4637095/python-equivalent-for-c-stl-vector-list-containers) – idjaw

+0

ここをクリック[リンク](https://docs.python.org/3/ library/stdtypes.html)...リストとタプルを探しましょう... **あなたから答えを見つける習慣を育ててくださいあなたが新しいプログラミング言語を習得している場合、ドキュメントを検索してください** – Suparshva

+0

これは役に立つかもしれません[リンク](https://stackoverflow.com/documentation)...それを探検してください – Suparshva

答えて

1

私はこれがあなたのより良い表現を与える辞書(ハッシュマップ)

input = ['str1', 'str2', 'str3'] 
stored_as = {'str1': {'start': 1, 'end': 2}, 'str2': {'start': 0, 'end': 2}, 'str3': {'start': 1, 'end': 1}} 

に格納することをお勧め。 あなたが宇宙に締まっている場合は、次のいずれかとして、それを保存することができます:

stored_as = [(1,2), (0,2), (1,1)] 

または

stored_as = [[1,2], [0,2], [1,1]] 
1

あなたがsliceオブジェクトを使用する場合は、直接のサブストリングを選択するためにそれらを使用することができます。

In [924]: al = [slice(0,3), slice(2,5), slice(5,10)] 
In [925]: astr = 'this is a long enough string' 
In [926]: [astr[s] for s in al] 
Out[926]: ['thi', 'is ', 'is a '] 

またはタプルのリストを持つ:

In [927]: at = [(0,3), (2,5), (5,10)] 
In [928]: [astr[s[0]:s[1]] for s in at] 
Out[928]: ['thi', 'is ', 'is a '] 

名前はタプルでもあります。またはリストのリスト。

私たちも itemgetterとそのスライスの繰り返しを非表示にすることができます

In [933]: import operator 
In [934]: f=operator.itemgetter(*al) 
In [935]: f 
Out[935]: operator.itemgetter(slice(0, 3, None), slice(2, 5, None), slice(5, 10, None)) 
In [936]: f(astr) 
Out[936]: ('thi', 'is ', 'is a ') 

スライスのこのリストは、スカラーインデックスも含めることができます:C++ STLベクトル/リストについては、[Pythonの同等の

In [945]: al = [0, slice(5,7), slice(10,14), -1] 
In [946]: operator.itemgetter(*al)(astr) 
Out[946]: ('t', 'is', 'long', 'g') 
関連する問題