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

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

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

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

Q&A

解決済

3回答

916閲覧

[python]rangeで生成したリストを含むリストのソートができずに困っています

mini1988

総合スコア56

Python 3.x

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

0グッド

0クリップ

投稿2018/06/07 11:34

rangeで生成したリストと、他のリストを結合して、結合したリスト内をソートしたいと考えています。

ただ、実際に、結合したリストをソートしたところ、返ってきたのは私が期待したような結果ではなく、空のリストでした。

一体なぜこうなってしまうのか、理解できずにいます。

どうすれば私が期待するような結果を得られるのか、どなたかご教示お願い致します。

a=[1336,108,9,30,12,94,15,291] b=list(range(17,38)) c=(a+b).sort()

返ってきたもの

空リスト

期待している結果

c=[9,12,15,17,18,.....37,94,108,291,1336]

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

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

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

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

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

guest

回答3

0

ベストアンサー

list#sortはインプレースなソートを行います。
代わりに組み込み関数のsortedを使ってください。

Python

1c = sorted(a+b)

投稿2018/06/07 11:35

LouiS0616

総合スコア35658

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

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

mini1988

2018/06/07 12:11

実現できました!ありがとうございます!
guest

0

既に回答はあるので、公式のドキュメントがよくまとまっているので読みましょうとアドバイスしておきます。
Python Doc - ソート HOW TO

投稿2018/06/07 12:05

wakame

総合スコア1170

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

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

mini1988

2018/06/07 12:11

実現できました!ありがとうございます!これからは回答をよく読むように心がけます。
guest

0

空リストではなく、Noneが返るはずですが・・・

関数のsortedを使う方法

python

1a=[1336,108,9,30,12,94,15,291] 2b=list(range(17,38)) 3c=sorted(a+b)

あえてsortメソッドで行くなら、

python

1a=[1336,108,9,30,12,94,15,291] 2b=list(range(17,38)) 3c=a+b 4c.sort()

この手の操作には、オブジェクト自体を変更するインプレースなメソッド操作(この場合はNoneを返すことが多い)と、オブジェクト自体は変更せずに新しいオブジェクトを返す関数的な操作が用意されていることが多いです。
両者は意識して使い分ける必要があります。

投稿2018/06/07 11:59

hayataka2049

総合スコア30933

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

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

mini1988

2018/06/07 12:11

実現できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問