質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

718閲覧

Python: リストの引数について

Y_Miz

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/01 07:20

前提・実現したいこと

9個の要素を持つリストに対して、最初の3個、真ん中の3個、最後の3個の和をとる函数を作成したい。

作った函数

引数aは9個の要素を持つリスト

def sum_every_3_9(a): atama = sum(a[0:3]) naka = sum(a[3:6]) sippo = sum(a[6:-1]) return atama, naka, sippo

試したこと

上の函数を

b = [1,2,3,4,5,6,7,8,9] sum_every_3_9(b)

のように呼び出したところ、出力が

(6, 15, 15)

となった。

補足

なお、函数4行目を

sippo = sum(a[6:9])

とした場合は、きちんと出力された。

確認したいこと

なぜ、

sippo = sum(a[6:-1])

では、うまくいかないのかを教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/01 07:30

b[6:9]とb[6:-1]で取得できる要素が違います。確認してみてください。
guest

回答1

0

ベストアンサー

スライス [a:b] は、半開区間 [a,b) の要素を抽出するからです。
[6:-1] と書いた場合、-1番目の要素は含まれません。

Python

1>>> b = [1,2,3,4,5,6,7,8,9] 2>>> b[6:-1] 3[7, 8]

この場合 [6:] と書くのが最も簡単でしょう。
[6:-0] と書きたくなる気もしますが、これは [6:0] と同じなので使えません。

Python

1>>> b[6:] 2[7, 8, 9] 3>>> 4>>> b[6:-0] 5[] 6>>> b[6:0] 7[]

なお、lst[x] と書いたとき、x部分の値はふつう添え字とかインデックスと呼びます。
引数とは呼びません。

投稿2020/08/01 07:24

編集2020/08/01 07:28
LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y_Miz

2020/08/01 07:28

半開区間[a,b)との説明、大変納得いたしました。 また、a[3:6]ではaの3番目から5番目までの値をとってくることを考えれば、私の誤った記法では-1の一個前、具体的には8までしか取られないことも当たり前でした。 貴重なお時間をすみません。
LouiS0616

2020/08/01 07:30

関数を『函数』と綴るあたり数学系の人なのかな、と思ったので半開区間なんて固い表現を使ってますが、ピンと来ないようであれば [a,b) を a以上b未満 に読み替えて下さい。
LouiS0616

2020/08/01 07:46 編集

b番目の要素が含まれないというのは案外見落としがちかと思います。他言語の類似構文では含む場合もありますし。
Y_Miz

2020/08/01 07:44

引数、インデックスなど、言葉遣いのご指摘もありがとうございます。 学生時代は地球物理を専攻しておりまして、函数は高校からの癖です笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問