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
  • 相关阅读:
    [Java]如何把当前时间插入到数据库
    [Java]Get与Post,客户端跳转与服务器端跳转
    [Java]MyBatis框架
    [Java]Java分层概念(转)
    [Java]Spring框架
    [Java]JavaScript在这里学习
    [Java]Servlet&JSP
    [Java]jdbc[转]
    [工具]GitHub上整理的一些工具[转]
    [Java] 集合框架
  • 原文地址:https://www.cnblogs.com/botoo/p/9012803.html
Copyright © 2011-2022 走看看