Pythonプログラマーの文芸の道

2613 ワード

1.アクセス配列の下付きおよびメンバー
プログラマーの書き方:
arr = [1,2,3,4,5,6]
i = 0
for item in arr:
    print i, item
    i += 1

文芸プログラマーの書き方:
arr = [1,2,3,4,5,6]
for i, item in enumerate(arr):
    print i, item

2.初期化
プログラマーのアプローチ:
arr = []
for i in range(100):
    if i%2 == 0:
       arr.append(i)

文芸プログラマーのやり方:
arr = [ i for i in range(100) if i%2==0]

3.重量除去
プログラマーのアプローチ:
arr = [1,1,2,2,3,3]
arr2= []
for x in arr:
    if x not in arr2:
        arr2.append(x)

文芸プログラマーのやり方:
arr = [1,1,2,2,3,3]
arr2 = list(set(arr))

4.配列アクセス
プログラマーのアプローチ:
arr = [1,2,3,4,5,6,7,8]
i = 0
while i < len(arr):
    print arr[i]
    i += 2

文芸プログラマーのやり方:
arr = [1,2,3,4,5,6,7,8]
for i in range(0, len(arr), 2):
    print arr[i]

5.条件付与
一般的なプログラマーのアプローチ:
x = 1
if x >1:
    y += 1
else:
    y -= 1

文芸プログラマーのやり方:
x = 1
y = x+1 if x>1 else: x-1


6.文字列接続
プログラマーのアプローチ:
arr = ['a', 'b', 'c']
result = ''
for i in arr:
    result += i

文芸プログラマーのやり方:
arr = ['a', 'b', 'c']
result = ''.join(arr)

7.条件判断
一般的なプログラマーのアプローチ:
a = 5
if a > 2 and a < 10:
    print 'yeah!'
else:
     print 'oooh!'

文芸プログラマーのやり方:
a = 5
if 2

8.辞書操作
一般的なプログラマーのアプローチ:
dict1 = {'age':18}
if dict1.has_key('age'):
    dict1['age'] += 1
else:
   dict1['age'] = 1

文芸プログラマーのやり方:
dict1 = {'age':18}
dict1['age'] = dict1['age']+1 if 'age' in dict1 else 1
inhas_keyよりpythonicであることを覚えておいてください.
9.100個の'*'を印刷
プログラマーのアプローチ:
a = ''
for i in range(100):
    a += '*'
print a

文芸プログラマーのやり方:
print '*'*100

10.文字列の反転
プログラマーのアプローチ:
def reverse(s):
    rt = ''
    for i in range(len(s)-1, -1, -1):
        rt += s[i]
    return rt

文芸プログラマーのやり方:
def reverse(s):
    return s[::-1]

神経症プログラマーのやり方:
from functools import reduce
def reverse (s):
    return reduce(lambda x,y:y+x,s)
reduceは何をしているのか分かりません.うんうん、後で話します.