3.深浅复制,字符串拼接和格式化输出

1.深浅复制

  首先明白:列表嵌套,即列表中可存在子列表 如:li=[1, 2, [3, 4]]

  1)浅复制 

          通过copy() 函数赋值,改变原列表内层列表会影响赋值的列表,但一层元素的改变不会影响新赋值的列表。

       如:li=[1, 2, [3, 4]]

             lise=li.copy()

             li[2][0]=666

             li[0]=0

             li    #[0, 2, [666, 4]]

             lise #[1, 2, [666, 4]]

   2)深复制

      引入copy模块进行的复制,赋值后新列表完全独立于原列表,不受原列表影响

      格式: import copy 

                 新列表名 = copy.deepcopy(要复制的列表名)

    例:

     import copy

     li=[1, 2, [3, 4]]

     lise=copy.deepcopy(li)

     li[2][0]=666

     li    #[0, 2, [666, 4]]

     lise #[1, 2, [3, 4]]

2.字符串拼接

     1) +拼接

        str='hello'

        str2=' python'

        str + str2 #'hello python'

     2)%s 格式化拼接 (%s即为字符串符号化表示,见3)

        '%s, %s'%('hello', 'python') #'hello,python' 解释:%s相当于占位符。本应输出''里的内容,让%s占用,                                                                                         后用括号内的内容填充

     3)join函数拼接

        '分隔符'.join(str)  以分隔符(可以无分隔符)分割str后输出(str 可代表字符串,列表,元组)

        如:li=['你好','余生','请多指教']

              ','.join(li) #'你好,余生,请多指教'

       4)'{}'.format 格式化拼接

            '{},{},{}'.format(obj1,obj2,obj3) #{}中不指定字符默认从左往右 输出为'obj1,obj2,obj3'

            '{0}{1}{2}'.format(obj1,obj2,obj3) #指定字符按照顺序 输出为'obj1,obj2,obj3'

            '{1}{0}{2}'.format(obj1,obj2,obj3) #按下标顺序输出 输出为'obj2,obj1,obj3'

            '第一项为{a} ,第二项为{b}, 第三项为{c}'.format(a=obj1,b=obj2,c=obj3) #也可用字母定义下标,输出                                                                                                                                略

       注:若想在连接中插入自定义字符串,应当写到%s或{}所在引号内。

             如'小生%s, 年方%s'%('北秋',18) #'小生北秋,年方18'

                 或如4) 第4种情况所示

3.字符串格式化

   1) 了解                                                    2)format 了解

      %d 整形                                                  '{:.2f}'.format(12.4444) 保留两位小数(四舍五入) 

      %s 字符串型                                            '{a:.2f}'.format(a=12.4444) 保留两位小数(四舍五入)

      %f 浮点型                                                '{:.2%}'.format(0.66666) 百分比格式 66.67%

      %c ASCII字符                                          '{:x}'.format(20) 转换成16进制

      %o 8进展字符                                          '{a:<5}'.format(a=12.3) 左对齐,长度为5 输出'12.3 '

       %x 16进制字符                                        '{a:x<6}'.format(a=12.3) 数字补x 输出'12.3xx '

      %e 科学记数法(8e2 8×10^2)                   '{a:0>6}'.format(a=12.3) 右对齐,数字补0 输出'0012.3'

      %r 自动判断格式化输出(输入为str,输         'a:0^5'.format(a=1) 两端对齐 输出'00100'

            出即str;输入为int,输出即为int)

      输出格式控制

      '%5s'%'ab' #控制输出位数5位,输出'   ab'

      '%6.3f'%10.3 #输出共6位(含小数点),3位小数

                              输出为'10.300'

      '%-6s'%'abc' #输出左对齐,输出为'abc   '

4.拓展操作

    f =  'hello {}'.format

    f('python') #输出'hello python' 此时f 相当于一个函数 

    合起来便是'hello {}'.format('python')

猜你喜欢

转载自blog.csdn.net/weixin_42089175/article/details/80467681
今日推荐