[解決済み] getitem__ のスライシングの実装
2022-06-28 05:37:06
質問
ベクター表現を作成するクラスで、スライス機能を実装しようとしています。
私は今のところこのコードを持っていて、これは適切にスライスを実装すると思いますが、私が以下のような呼び出しをするときはいつでも
v[4]
ここで、vはベクトルです pythonは十分なパラメータを持っていないというエラーを返します。そこで、どのようにして
getitem
という特別なメソッドを定義して、プレーンインデックスとスライシングの両方を処理する方法を見つけようとしています。
def __getitem__(self, start, stop, step):
index = start
if stop == None:
end = start + 1
else:
end = stop
if step == None:
stride = 1
else:
stride = step
return self.__data[index:end:stride]
どのように解決するのですか?
この
__getitem__()
メソッドは
slice
オブジェクトがスライスされたときに受け取ります。単に
start
,
stop
そして
step
のメンバーは
slice
オブジェクトのメンバを使用して、スライスのコンポーネントを取得します。
>>> class C(object):
... def __getitem__(self, val):
... print val
...
>>> c = C()
>>> c[3]
3
>>> c[3:4]
slice(3, 4, None)
>>> c[3:4:-2]
slice(3, 4, -2)
>>> c[():1j:'a']
slice((), 1j, 'a')
関連
-
Python関数の高度な応用を解説
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】__getitem__メソッドの理解
-
[解決済み] Pythonでellipsis slicing syntaxを使うにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
python call matlab メソッドの詳細
-
Pythonによるjieba分割ライブラリ
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] Pythonで'super'は何をするのですか?- super().__init__() と明示的なスーパークラス __init__() の違い