パート14 - Pythonのタプル - socratica [マイノート]とのpythonを学びます

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/sinat_34611224/article/details/85704557

レッスン16

前書き

いないすべてのデータが山の形で保存することができ、一般的には、より多くの有用なデータを、配列に格納されています。Pythonは配列に対処するいくつかの方法、一般的な方法でそのリストを提供するが、タプルは小さく、高速の記憶方法です。だから、リスト、および異なるそれらのタプル?彼はそれを試してみるようになりました。

リストとタプルの違い

括弧で定義された第1小、リストから別の、およびタプルは括弧内に定義されています。

# List example
prime_numbers = [2,3,5,7,11,13,17]

# Tuple example
perfect_squares = (1,4,9,16,25,36) # first difference: [],()

# Display length
print("# Primes = ", len(prime_numbers))
print("# Squares = ", len(perfect_squares))
# Primes =  7
# Squares =  6

現在のシーケンスの長さのリストとタプル一時的に違いはありませんを印刷しよう。次の要素は、tryをプリントアウトしています。

# Iterate over both sequences
for p in prime_numbers:
    print("Prime: ", p)
    
for n in perfect_squares:
    print("Squares: ", n)
Prime:  2
Prime:  3
Prime:  5
Prime:  7
Prime:  11
Prime:  13
Prime:  17
Squares:  1
Squares:  4
Squares:  9
Squares:  16
Squares:  25
Squares:  36

今までは、まだ何が違うのが表示されません。その後、我々は、データ構造の外観をプリントアウトするために2つの組み込み方法に適用しよう。

print("List methods")
print(dir(prime_numbers))
print(80*"_")
print("Tuple methods")
print(dir(perfect_squares))
List methods
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
________________________________________________________________________________
Tuple methods
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

見つけ、そこにリスト「APPEND」、「明確な」、「コピー」、「数」、「延長」、「インデックス」、「挿入」、「ポップ」、「削除」は、これらのメソッド「逆」、「ソート」、することができタプルのみの「数」、「インデックス」中。これは、より多くのストレージスペースを取ることよりもタプルのリストを意味します。

# utilize sys.getsizeof to get the memery
import sys

list_eg = [1,2,3,'a','b','c',True,3.1415]
tuple_eg = (1,2,3,'a','b','c',True,3.1415)

print("list size = ", sys.getsizeof(list_eg))
print("tuple_size = ", sys.getsizeof(tuple_eg))
list size =  128
tuple_size =  112

最終的にはそれが大規模に、より適し、明らかタプルであり、唯一の単純なデータストレージを必要とするとき、大量のデータでそれらの間の違いを、見ることができます。

もちろん、リストの追加および削除をすることができ、組み込み関数から入手することができますが、変更も不変と呼ばれることができタプルされていません。犠牲タプル機能用のPython、より速くそれを与えます。

# utilize timeit to test the speed
import timeit

list_test = timeit.timeit(stmt="[1,2,3,4,5]",
                         number=1000000)
tuple_test = timeit.timeit(stmt="(1,2,3,4,5)",
                          number=1000000)

print("List time : ", list_test)
print("Tuple time :", tuple_test)
List time :  0.12573448600005577
Tuple time : 0.02030748099991797

この小さな実験から得ることができ、速度の点でタプルの利点は、まだ非常に明白です。

タプル実験

empty_tuple = ()
test1 = ("a")
test2 = ("a", "b")
test3 = ("a", "b", "c")

print(empty_tuple)
print(test1)
print(test2)
print(test3)
()
a
('a', 'b')
('a', 'b', 'c')

なぜtest1のプリントアウトの文字列?むしろ、他のと同じタプル形式それよりも?

print(type(test1))
print(type(test2))
<class 'str'>
<class 'tuple'>

一つだけの要素がコンマで終了する必要がある場合ので、文字列が本当にあります。

test1 = ("a",)
print(test1)
('a',)

タプルの別の構造

# another way
test1 = 1,
test2 = 1,2
test3 = 1,2,3

print(test1)
print(test2)
print(test3)

print(type(test1))
print(type(test2))
print(type(test3))
(1,)
(1, 2)
(1, 2, 3)
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>

タプルの割り当て

# (age, country, know_python)
survey = (23, "China", True)

age = survey[0]
country = survey[1]
know_python = survey[2]

print("Age = ",age)
print("Country = ",country)
print("Know Python? ", know_python)
Age =  23
Country =  China
Know Python?  True

同様リストに抽出されたタプルの要素は有効であるが、タプルは、より効率的な方法を提供します。

survey2 = (24, "America", True)
age, country, know_python = survey2

print("Age = ",age)
print("Country = ",country)
print("Know Python? ", know_python)
Age =  24
Country =  America
Know Python?  True

また、例えば一から一、でなければならないタプルの要素を抽出するために、このように間違いに注意してください。

x,y,z = (1,2)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-16-6f419fd02ba5> in <module>()
----> 1 x,y,z = (1,2)


ValueError: not enough values to unpack (expected 3, got 2)
a,b,c = (1,2,3,4)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-17-2e0282f2aef3> in <module>()
----> 1 a,b,c = (1,2,3,4)


ValueError: too many values to unpack (expected 3)

結論

これらは、高速ビル、リストと比較して、タプルの内容です。一つだけの要素ならば、コンマで終了することを忘れないことに注意してください。独自の方法で抽出した要素のタプルで、一から一の注目、何より小さくない。ありません 全体的に、タプルは、コードの品質はそれについて考える必要があり、誰のサブモジュールの彼らのリストに、より適している与えられた、その利点を持っています。

ユーチューブソース:
https://www.youtube.com/watch?v=bY6m6_IIN94&list=PLi01XoE8jYohWFPpC17Z-wWhPOSuh8Er-

おすすめ

転載: blog.csdn.net/sinat_34611224/article/details/85704557