2017-06-30 5 views
3

リストの先頭と末尾にいくつの要素をスキップするかを制御する変数が必要です。Pythonリストスライシングのための何も返さない方法

skip_begin = 1 
skip_end = 2 
my_list = [9,8,7,6,5] 
print(my_list[skip_begin:-skip_end]) 

[8、7]を返します。

Why does slice [:-0] return empty list in Pythonが示すように、skip_end = 0の場合、空のリストになります。

この場合、実際にはmy_list [skip_begin:]が必要です。

my_list[skip_begin:-skip_end if skip_end != 0 else ''] 

は機能しません。三項演算で空の値を返すにはどうすればよいですか?

私はむしろ、 "[]" ではなく

my_list[skip_begin:-skip_end] if skip_end != 0 else my_list[skip_begin:] 

かのif-elseブロックを行う内部の三項演算を使用すると思います。

答えて

8
my_list[skip_begin:-skip_end if skip_end != 0 else None] 

最初の解決方法の問題は、インデックススライシングでは文字列ではなく数字(またはヌル値)が必要であることです。また

my_list[skip_begin:-skip_end or None] 
+0

ありがとう! – Gnubie

6
my_list[skip_begin:-skip_end if skip_end else None] 

あなたのライン:

TypeError: slice indices must be integers or None or have an __index__ method

私は霊感持っている:

my_list[skip_begin:-skip_end if skip_end != 0 else ''] 

はそれが降伏するので正しい軌道に乗ってあなたを作るかもしれません前の答えではなく、if skip_end != 0skip_endと同じです。

-1
my_list[skip_begin:-skip_end if skip_end != 0 else skip_begin:] 
+0

悪くないけど、skip_begin:をやり直したくない。 – Gnubie

+0

[編集]リンクを使用して、このコードの仕組みを説明し、コードを提供するだけでなく、将来の読者を助ける可能性が高い説明をしてください。 [回答]も参照してください。 –

関連する問題