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

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

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

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

Q&A

解決済

1回答

1022閲覧

複数のリストの長さを比較して異なるものを効率的にあぶりだす方法が知りたい

yuudai

総合スコア65

Python

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

0グッド

0クリップ

投稿2021/04/13 07:48

前提・実現したいこと

5つのリストにwhileで毎回値を追加していく処理をしたいのですがすべてのリストに毎回値を追加するわけではなく、値が追加されなかったときはそのリストに仮の値を入れてリストの長さを保ちたいです。
そこで5つのリストの長さを比較して長さが小さいリストに値を入れたいのですが効率的に長さが小さいリストを見つける方法はありますか?

該当のソースコード

#空のnumpy配列 stick_axis0 = [] stick_axis1 = [] L_input = [] R_input = [] A_input = [] # ループ while True: #ここで短いリストに値を入れたい # イベントの取得 event = pygame.event.get() print(len(event)) if len(event) == 0: stick_axis0 += [0] stick_axis1 += [0] L_input += [None] R_input += [None] A_input += [None] else: first_value = 0 for e in event: # ジョイスティックのボタンの入力 if e.type == pygame.locals.JOYAXISMOTION: if first_value == 0: print('十時キー:', round(joystick.get_axis(0),6), round(joystick.get_axis(1),6)) stick_axis0 += [round(joystick.get_axis(0),6)] stick_axis1 += [round(joystick.get_axis(1),6)] first_value = 1 elif e.type == pygame.locals.JOYBUTTONDOWN: print('ボタン'+str(e.button)+'を押した') if e.button == 10: # L L_input += [1] elif e.button == 9: # R R_input += [1] elif e.button == 1: # A A_input += [1] elif e.type == pygame.locals.JOYBUTTONUP: print('ボタン'+str(e.button)+'を離した') if e.button == 10: # L L_input += [0] elif e.button == 9: # R R_input += [0] elif e.button == 1: # A A_input += [0]

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

短いのを探すより、先に仮の値を入れておいて、値を入れるときは最後の要素を置き換えたほうが楽なのではないでしょうか。
以下のようなコードです。

python

1 #ここで短いリストに値を入れたい 2 stick_axis0 += [仮の値] 3 stick_axis1 += [仮の値] 4 L_input += [仮の値] 5 R_input += [仮の値] 6 A_input += [仮の値] 7 # イベントの取得 8 event = pygame.event.get() 9 print(len(event)) 10 if len(event) == 0: 11 stick_axis0[-1] = 0 12 stick_axis10[-1] = 0 13 L_input[-1] = None 14 R_input[-1] = None 15 A_input[-1] = None 16 else: 17 first_value = 0 18 for e in event: 19 # ジョイスティックのボタンの入力 20 if e.type == pygame.locals.JOYAXISMOTION: 21 if first_value == 0: 22 print('十時キー:', round(joystick.get_axis(0),6), round(joystick.get_axis(1),6)) 23 stick_axis0[-1] = round(joystick.get_axis(0),6) 24 stick_axis1[-1] = round(joystick.get_axis(1),6) 25 first_value = 1 26 elif e.type == pygame.locals.JOYBUTTONDOWN: 27 print('ボタン'+str(e.button)+'を押した') 28 if e.button == 10: # L 29 L_input[-1] = 1 30 以下略 31

投稿2021/04/13 09:18

ppaul

総合スコア24670

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

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

yuudai

2021/04/13 13:11

ありがとうございます。盲点でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問