我們先看看下面這幾個例題,感受一下!
例題1、打印大寫字母、小寫字母
大寫字母:
常規寫法:
upper=""
for i in range(65,91):
print(chr(i),end="")
一行代碼:
注意:多取一位的時候是因爲這裏是開區間,最後一位取不上,所以一般多取一位。
print("".join(chr(i) for i in range(65,91)))
小寫字母:
常規寫法:
lower=""
for i in range(97,123):
print(chr(i),end="")
一行代碼:
print("".join(chr(i) for i in range(97,123)))
例題2、一行代碼實現1-100之和
常規寫法:
>>> sum=0
>>> for i in range(1,101):
... sum+=i
...
>>> print(sum)
5050
一行代碼:
>>> print((1+100)*50)
5050
例題3、打印9*9的乘法口訣
常規寫法:
for i in range(1,10):
print()
for j in range(1,i+1):
print('%dx%d=%d\t'%(j,i,i*j),end="")
一行代碼:
print('\n'.join([' '.join(['%s*%s=%-2s' % (j, i, i*j) for j in range(1, i+1)])for i in range(1, 10)]))
例題4、一個list包含10個數字,然後生成新的list,要求,新的list裏面的數都比之前的數多1
常規寫法:
list1=list(range(10))
result=[]
for i in list1:
result.append(i+1)
print(result)
一行代碼:
>>> print([i+1 for i in list(range(10))])
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
例題5、把字符串中的所有數字去掉
常規寫法:
#encoding-utf-8
s="a1b2c3d4e5fffff"
letters_list=[]
for i in s:
if i not in "0123456789":
letters_list.append(i)
print("".join(letters_list))
一行代碼:
print("".join(filter(lambda x:x not in "0123456789","a1b2c3d4e5fff")))
例題6、非遞歸實現生成斐波那契數列
常規寫法:
#conding=utf-8
def fib(n):
result=[]
if n<=0 or not isinstance(n,int):
return result
for i in range(n):
if i<2:
result.append(1)
else:
result.append(result[i-1]+result[i-2])
return result
print("斐波那契數列:",fib(15))
print("斐波那契數列:",fib(-5))
一行代碼:
print([x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in([[1, 1]], ) for i in range(15)]])
總結:
從上面的這幾個例題我們可以看出常規代碼寫法與一行代碼的區別:
1、常規代碼可讀性高,適合初學者
2、一行代碼一目瞭然,適合有一定代碼功底的人
3、維護性方面,各有好處,具體情況具體分析。