前提・実現したいこと
[Python]あるリストの要素を昇順に並び替えたリストを新規作成したい
ここに質問の内容を詳しく書いてください。
発生している問題・エラーメッセージ
リストaの要素を昇順に並び替えたリストbを作成すると、元のリストaの要素も昇順になってしまう。
該当のソースコード
Python
1import numpy as np 2a = np.random.randint(0,50,4) 3 4b = a 5 6for i in range(3): 7 for j in range(i+1,4): 8 if b[i] > b[j]: 9 p = b[i] 10 q = b[j] 11 b[i] = q 12 b[j] = p 13 14print('a =',a) 15print('b =',b) 16 17
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
バブルソートを実装してみる、という主旨でしょうか。
python
1a = np.random.randint(0,50,4)
こうするとリストではなくnumpy配列型の返り値が得られます。その相違は問題にしない、というのであればこれでも構いませんが。
python
1b = a
pythonの変数は単なるオブジェクトへの参照なので、この代入はb
がa
と同じものを参照するようにする、以上の意義はありません。
コピーして別のものを作るといいでしょう。幸いnumpy配列にはcopyメソッドがありますから、7文字の追加で目的を達成できます(list
にもあるので、そっちでやるにしてもやることは変わらないけど)。
python
1b = a.copy()
投稿2019/10/12 15:08
総合スコア30935
0
ndarrayの浅いコピーを取って下さい。
Python
1b = a.copy()
投稿2019/10/12 15:03
編集2019/10/12 15:05総合スコア35668
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/12 15:14
2019/10/12 15:18
2019/10/12 15:24 編集
2019/10/12 15:43
2019/10/12 16:10 編集
2019/10/12 16:09
2019/10/12 16:17
2019/10/12 16:40 編集
2019/10/12 17:25
2019/10/13 06:46 編集
2019/10/13 06:43 編集
2019/10/13 15:39 編集
2019/10/13 15:46
2019/10/14 10:48
2019/10/14 11:08
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。