Memo Life

ビギナーSEのメモ書き

【python勉強】01.データ構造メモ(タプル、リスト、ハッシュ)

# -*- coding: utf-8 -*-

mat = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
        ]

print ([[row[i] for row in mat] for i in [0, 1, 2]])

list(zip(*mat))

del(mat[0])
print mat

# リストと文字列には、インデックスやスライスなど、共通の性質がたくさんある
# 標準的なシーケンスデータ型がもうひとつ存在。
# タプル

t = 12345, 54321, 'Hello'
print t

# 入れ子にできる
u = t, (1, 2, 3, 4, 5)
print u


# 連想配列
tel = {'jack': 4098, 'sape': 4139}
tel['guido'] = 4127
print tel
print tel['guido']

print list(tel.keys())
print 'jack' in tel

print [x + "aho" for x in tel]


# dicコンストラクタ キー:値ペアを作成
d = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])

print sorted(d.values())

# 辞書内包を利用すれば、キーと値を与える任意の式からディクショナリを生成可能
print {x: x*2 for x in (2, 4, 6)}

# 簡単な文字の場合、キーワード引数 dictのコンストラクタで
# 作成した方が楽
print dict(a="b", b="c", c="d")

# いわば、連想配列のアンパック
# itemsメソッドの便利さについて
for name, number in tel.items():
    print name, number

# enumerateを利用すると位置インデックスと対応した値を取得可能
for idx, name in enumerate(tel):
    print idx, name

# zip関数は2つ以上のシーケンスに対して同時にループをかけるときに便利
questions = ['Name', 'Quest', 'Favorite Color']
answers = ['Tany', 'RPGVXAce', 'Orange']

for q, a in zip(questions, answers):
    print('What is your {0}? It is {1}.'.format(q, a))


# ソート順ループ
print ("---sorted---")
for name in sorted(tel):
    print name

# 同じシーケンス型を持つオブジェクトと比較できる
print("---tupple---")
print (1, 2, 3) < (1, 2, 4)

# リストとタプルの比較は?
print('---list_and_tupple---')
print [1, 2, 3] < (1, 2, 3)