pythonにおけるlist,tupleなどの秩序化シーケンス

4929 ワード

list,tupleおよびstrはいずれも順序付きシーケンスであり、後の両者とは異なるlistは可変オブジェクトであるtupleおよびstrは非可変オブジェクトである.主にこの3つの秩序あるシーケンスのいくつかの方法について話します.
方法
効果
L1.append(var)
後に要素を追加
L1.pop(var)
該当する要素を返し、L 1から削除します.
L1.remove(var)
リスト内の値の最初の一致を削除
L1.sort()
リストがソートされます
L1.reverse()
リストの順序変更
L1.count(var)
リスト内の値の出現回数の計算
以上がリストでよく用いられる方法である、ここでL 1.remove()はfor....in….サイクル中に状況が現れます.例えば、20より大きい数を取って、20より小さいすべてを削除したいと思っています.
list2 = range(50)
for i in list2:
    if i<20:
        print "do something"
        list2.remove(i)
print list2        

結果は次のとおりです.
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
なぜならこの反復の過程でfor..inループはポインタ指示による
[0,1,2,….49] ^
最初のremoveの後、リストはこのような形式になり、
[1,2,3,4…49]^正しい結果を得るためには、このように書くことができます.enumerate、この内蔵関数はインデックスも要素も遍歴することができます.
for i, n in enumerate(numbers):
    if n < 20 :
        print "do something" 
        numbers[i] = None
numbers = [n for n in numbers if n is not None]

tuple tupleは可変の秩序シーケンスであり,一度初期化すると修正できない.修正できないのでapeend()などの方法がなく、その中の単一要素も削除できず、メタグループ全体しか削除できません.
tup1 = (1, 4, 5, 3);
del tup1;
print tup1
#         
NameError: name 'tup1' is not defined

文字列str文字列はpythonにおいて秩序あるシーケンスであり、これは文字列がpythonにおいて多くの操作を行うことができることを意味する.例えばslice.ただし、可変オブジェクトであるため、文字列の一部は変更できません.
文字列がよく遭遇する問題の一つは、文字列を逆順序で出力する方法です.この場合、slice文字列に使用して、逆順出力の関数を次のように記述できます.
def reverse(x):
    if not isinstance(x,basestring):
       raise TypeError ("bad type");
    else:
        return x[::-1]   
isinstanceパラメータが文字列であるか否かを判断するためのものであり、そうでなければ誤報となる.basestringはいstrunicodeの親は、文字列の種類かどうかを見分けることができます.sliceこれは、秩序化されたシーケンスフラグメントを迅速に切り取る操作です.
sliceの基本スタイル:slice(start,stop[,step])例えばlistを作る
L =range(100)
>>>[0,1,2,3.....99]

10~20の間の数をとる
L[10:21]
>>>[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#      
L[10:20:2]
>>> [10, 12, 14, 16, 18]
#   10  
L[-10:]
>>>[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

tupleとstringも同様にsliceを使用することができ、得られた結果は依然としてtupleまたはstringである.
(0, 1, 2, 3, 4, 5)[:3]
>>>(0, 1, 2)

'ABCDEFG'[:3]
>>>'ABC'