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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

4回答

21507閲覧

Python:for文の中で値を保存する方法

Ykkykk

総合スコア140

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2018/11/08 07:55

for文でリストの中の値を回していく際に、特定の位置にある値をループの中で保存する方法が知りたいです。
あらかじめリストの長さや中身がわからない場合に、そのリストをリストの長さ分for文を回していくことを考えております。
リストのフォーマットとしてあらかじめわかることは、

Python3

1lst = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7]

以上のように値がいくつかずつ連続して入っているということだけです。

Python3

1lst = [なんらかの値が入ったリスト] 2 3len_lst = len(lst) 4 5for i in range(len_lst): 6 var = lst(i)

このようにループを回していく中で、リストの中の特定の値をループの中で保存することはできるのでしょうか?上記のようにリストの長さでループを回していき、iを添え字にしてリストの値にアクセスしようとすると、ループが回るごとに値が更新されてしまうと思うのですが、リストの中のある値だけを変数に収めてその後の処理で使用するような動きをしたいです。変数に収める値は、条件分岐などで指定することになるのかと思います。
ご教示いただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答4

0

ベストアンサー

できます。方法はやりたいことによります。

python

1lst = なんらかの値が入ったリスト 2 3# 条件に合うものを一個だけ取り出したいとき(いわゆる線形探索) 4for x in lst: 5 if xが条件を満たしていたら: 6 result = x 7 break 8 9# 添字も取得する 10for i, x in enumerate(lst): 11 if xが条件を満たしていたら: 12 result_i = i 13 result = x 14 break 15 16# 複数あるとき 17results = [] 18for x in lst: 19 if xが条件を満たしていたら: 20 results.append(x) 21

投稿2018/11/08 08:30

編集2018/11/08 09:29
hayataka2049

総合スコア30933

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

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

Ykkykk

2018/11/08 08:37

ご回答いただきありがとうございます。breakを使用している場合、抜けるのはif文から抜けるということになるのでしょうか?
hayataka2049

2018/11/08 09:28

いえ、すぐ上のループから抜けます。
Ykkykk

2018/11/08 09:30

ループ自体から抜けるということなのですね。 そこで取得した値をループの中で使用したいとすると、もう一つ外側のループを設置するか、リストに収めることになりそうですね。
guest

0

値が奇数のものを その index と 値の組を取り出すことを 4 つの方法で描いてみました。
a.py

python3

1lst = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7] 2 3# 奇数を取り出す (index も) 4evens = [] 5for i in range(len(lst)): 6 v = lst[i] 7 if v % 2 == 1: 8 evens.append([i, lst[i]]) 9print(evens) 10 11evens = [[i, lst[i]] for i in range(len(lst)) if lst[i] % 2 == 1] 12print(evens) 13 14evens = [] 15for i, v in enumerate(lst): 16 if v % 2 == 1: 17 evens.append([i, v]) 18print(evens) 19 20evens = [[i, v] for i, v in enumerate(lst) if v % 2 == 1] 21print(evens)

実行例
イメージ説明

参考情報

  • 【Python入門】for文でデータのindexを取得する方法

http://programming-study.com/technology/python-for-index/

投稿2018/11/09 20:55

katoy

総合スコア22324

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

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

Ykkykk

2018/11/12 01:51

ご回答いただきありがとうございます。詳細な例もご提示いただき、大変勉強になります。それぞれの方法について、理解していきたいと思います。 ありがとうございました!
guest

0

ループが回るごとに値が更新されてしまうと思う

var自体もリストにして、appendで値を押し込んでいけば良いです。

投稿2018/11/08 08:00

編集2018/11/08 08:01
LouiS0616

総合スコア35660

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

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

Ykkykk

2018/11/08 08:24

ご回答いただきありがとうございます。 その方法も考えたのですが、そのようにして作成したリストの後ろから何番目かの値を取得したい、というような場合に、作成したリストの長さはループが回るごとに変わるため、どのようにアクセスすべきかがよくわかりませんでした。
LouiS0616

2018/11/08 08:35

> 作成したリストの後ろから何番目かの値を取得したい > 作成したリストの長さはループが回るごとに変わるため マイナスの添え字で後ろからアクセスできます。 例えばdstの後ろから1番目(最後尾)は dst[-1] で取得可能です。 またマイナスの添え字が使えないような言語でも、dst[配列長 - 2] のようにすれば充分可能です。
LouiS0616

2018/11/08 08:40

あるいは辞書に放り込んでも良いかと。元のリストのインデックスをキーにして。
Ykkykk

2018/11/08 08:55

辞書にいれるという方法もあるのですね。 ありがとうございます。
guest

0

そのループの中で、条件にあったら、なんかの変数に入れとけばいいんじゃないかと。
最初だけのものが必要なら、なんかのフラグを用意しとけばいいし

投稿2018/11/08 08:00

y_waiwai

総合スコア87774

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

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

Ykkykk

2018/11/08 08:24

ご回答いただきありがとうございます。 やはり変数に入れていくというのが一番よい方法のようですね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問