zoukankan      html  css  js  c++  java
  • python基础===* 解包,格式化输出和print的一点知识

    python3中的特性:

    >>> name = "botoo"
    >>> print(f"my name is {name}")
    my name is botoo

    等价于:

    >>> print("my name is {}".format(name))
    my name is botoo

    再看list,如果我们想打印一个list的每个内容,例如我想输出0,1,2,3,4,5,6,7,8,9的格式

    >>> L = list(range(10))
    >>> for l in L:
        print(l)
    
        
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

    显然是不行的,所以能想到的是,给print()函数的end参数进行更改:

    >>> for l in L:
        print(l, end=",")
    
        
    0,1,2,3,4,5,6,7,8,9,

    于是得到了这样的答案,但是最后多了一个逗号。这个是可以通过代码进行去掉的:

    >>> for i in L:
        if i != L[-1]:
            print(i,end = ",")
        else:
            print(i)
    
            
    0,1,2,3,4,5,6,7,8,9

    至此我们发现,整个过程很繁琐,也很复杂。

    有没有更简单的方式,更pythonic的代码

    基于此,想到了前几天用*对函数参数解包的作用,代码如下:

    >>> def func(a,b,c):
        print(a+b+c)
    
        
    >>> arg = (1,2,3)
    >>> func(*arg)
    6

    *将arg的每一项分配给了func函数,而这个过程中*的作用就是解包

    于是,再次尝试:

    >>> print(*L)
    0 1 2 3 4 5 6 7 8 9

    果然可行,再加入,号就可以成功。

    >>> print(*L,sep = ",")
    0,1,2,3,4,5,6,7,8,9

    (关于print()函数的sep,和end参数的用法自行百度。)

    当然,还有方法就是使用.join(),网上说明很多,故不再赘述。

    print(",".join([str(i) for i in L]))
    0,1,2,3,4,5,6,7,8,9
  • 相关阅读:
    10个实用的但偏执的Java编程技术
    分布式文件系统FastDFS设计原理
    👮 Golang Gin/Ace/Iris/Echo RBAC 鉴权库
    深入浅出爬虫之道: Python、Golang与GraphQuery的对比
    (.*?)
    开箱即用的高匿代理抓取工具
    6.可见性关键字(volidate)
    5.同步关键字(synchronized)
    4.等待和通知
    3.线程优先级
  • 原文地址:https://www.cnblogs.com/botoo/p/9012803.html
Copyright © 2011-2022 走看看