我们先看看下面这几个例题,感受一下!
例题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、维护性方面,各有好处,具体情况具体分析。