お勉強Wiki続き

Pythonのお勉強の問題集より。

16進数ダン

fp = file(raw_input(), 'rb')
buf = fp.read()
fp.close()
count = 0
data = ''
for c in buf:
    if count % 16 == 0:
        print data
        data = ''
        print '%010X |' % count,
    print '%02X' % ord(c),
    if c.isspace():
        c = ' '
    elif not c.isalnum():
        c = '.'
    data += c
    count += 1

while count % 16 != 0:
    print '  ',
    count += 1
print data

リストA,Bそれぞれから1つづつ取ってきたリストを簡単に生成する

lista = ['AA', 'AB', 'AC']
listb = ['BA', 'BB', 'BC']
newlist = []

for a in lista:
    for b in listb:
        newlist.append((a,b))

print newlist
リスト内包表記で簡潔に
lista = ['AA', 'AB', 'AC']
listb = ['BA', 'BB', 'BC']

newlist = [(a, b) for a in lista for b in listb]
print newlist

リスト〜から、辞書〜を簡単に生成する

lst = [['Py','PyA'],['Py','PyB'],['Py','PyC'],['Pe','PeA'],['Pe','PeC']]
dct = {}
for el in lst:
    dct.setdefault(el[0], []).append(el[1])
print dct

n個の空リストを要素とするリストを簡単に生成する。

n = 3
lst =[]
for i in range(n):
    lst.append([])

print lst
リスト内包表記で簡潔に
n = 3
lst = [[] for i in range(n)]
print lst