python3一行代码到底有多强大?

    技术2022-07-11  80

    我们先看看下面这几个例题,感受一下!

    例题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、维护性方面,各有好处,具体情况具体分析。

    Processed: 0.032, SQL: 9