それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

tupleとlist

タプル。配列の一種。


ここらでPython配列まとめ。

Python配列には2種類ある

  • A 可変長
  • B 固定長
  • 可変長
    • 一般的な配列、他のスクリプトと同じ。
  • 固定長な配列
    • C言語っぽい配列
    • 文字列(string)
    • tuple
    • Set

と分類されてる。


何が違うか?変数の作り方を見れば一目瞭然だろう。

#List
list  = ["abc", "def", "ghi"]
#Tuple
tuple = ( "abc", "def", "ghi")
#Dictionary
dic   = {"abc": "123", "def": "456", "ghi" : "789"}
#Set
sets  = set(["sony", "apple", "sharp", "apple", "sharp", "sony"])
#sets=['sony','apple','sharp']

で、タプルは、オブジェクトというより言語構造に近い。

#タプルを使った例
a = 1,2,3
x,y,z = a
#こんなモノもタプルです

#引数がタプルで、戻り値もタプルな例
def f(x,y,z):
    return x,y,z

print f(*a)
#(1,2,3)

a,b,c = f(1,2,3)
#a =1, b=2, c=3


関数に使うと便利だと思うよ。rubyも、この形式取り入れてますよね。
関数の定義に使うので、配列形式というより、言語構造だと思う。

Set ユニーク値

配列の値に重複を許さない。配列のキーとして使うのかな。

#set()の例
print set([1,2,3,4,4,3,2,1])#1,2,3,4

a = set("google") #o,l,e,g
b = set("yahoo")  #y,a,o,h
print a - b #e,l,g
print b - a #y,a,h

Dictionary 辞書式配列

一般的に連想配列と呼ばれるモノ。JSON形式。あえて説明の必要はないと思うが。JavaでもDictionaryクラス(Hashtable, Properties)になる。

#Dictionary
dic = {}             # {}
dic["a"] = "apple"   # {'a':'apple'}
dic["c"] = "cupple"  # {'a':'apple', 'c':'cupple'}
del dic["a"]         # {'a':'apple'}
dic["p"] = "people"  # {'a':'apple', 'p':'people'}
dic["s"] = "sample"  # {'a':'apple', 'p':'people', 's':'sample'}
dic.keys()           # ['a', 'p', 's']
"a" in dic           # True
dic.has_key("s")     # True

Dictionary配列は関数を使って増やすことも出来る

#関数を用いた例
dict(j="jingle", "t"="tinkle")
dict([("s", "simple"), ("a", "ample")])