statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))
最大から最小の整数でソートしたい。この場合は 5 と 66 です。しかし、機能していないようです。
この関数は新しいsorted
リストを返すため、関数の結果を次のように割り当てる必要があります。
new_list = sorted(statlist, key=lambda x: int(x[1]))
.sort
その場での並べ替えには次の方法を使用します。
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))
を使用したい場合はsorted
、変数を再割り当てします。
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))
降順で並べ替えるには、次を使用しますreverse
。
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)
itemgetter
次に、の代わりに使用することをお勧めしますlambda
:
import operator
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=operator.itemgetter(1), reverse=True)
.sort 関数にパス、キー、およびリバースを実行できます
>>> x.sort(key=lambda x:x[1],reverse=True)
>>> x
[('bzs', 66, 1), ('abc', 5, 1)]
>>>
インプレースソート用
statlist.sort(key=lambda x: x[1])
ソートされたデータを使用して、他のリストを作成するため
otherlist = sorted( statlist, key=lambda x: x[1] )
from operator import itemgetter
statlist = [('abc',5,1), ('bzs',66,1), ... ]
# statlist.sort modifiest the statlist, sorted returns a new one
# reverse puts the largest items to the front
statlist.sort(key=itemgetter(1), reverse=True)
sorted() は「ソート関数のように」機能すると考えていたという alex のコメントに応えて:
「ソート機能のように」機能した場合、ライブラリに入れられた可能性は低いです。
いずれにせよ、ソート機能はありません...リストオブジェクトのソートメソッドを参照します。
対話型インタープリターを使用した簡単なデモ:
>>> alist = [3, 2, 1]; x = alist.sort(); print x; print alist
None
[1, 2, 3]
>>> alist = [3, 2, 1]; x = sorted(alist); print x; print alist
[1, 2, 3]
[3, 2, 1]
ヒントは次のとおりです。パターンと類似点を探しますが、直感的な推測を常に確認してください。これらのアイデアをreverse
およびに適用することをお勧めしますreversed
。
>>> s = [('xyz', 8, 1), ('abc',5,1), ('bzs',66,1) ]
>>> s = sorted(s, key=lambda x: int(x[1]))
>>> s.reverse()
>>> print s
[('bzs', 66, 1), ('xyz', 8, 1), ('abc', 5, 1)]
ねえ、配列に何かを保存するときはいつでも、順序を気にする傾向はありません。最後にsorted()
、たとえば次のように使用しstatlist = sorted(statlist)
ます。最大から最小にしたい場合は、これが最大から最小statlist = sorted(statlist, reverse = True)
にする簡単な方法です!
これを使用したコード例 (抜粋)
while i <= math.sqrt(intnum):
if (intnum % i) == 0:
numbers.insert(0,i)
numbers.insert(0,int(intnum/i))
print(i,":", int(intnum/i))
i += 1
numbers = sorted(numbers, reverse = True)