zoukankan      html  css  js  c++  java
  • Python学习笔记三:03数值类型以及数据类型

    三、深复制和浅复制
    1.字符串的拼接

    例: a = 'hello'  ,    b = 'python'   ,   c = '!'     将a,b ,c 中的字符串连成一句话。
    第一种方法:用+号

    s='i love python'
    s1='!!'
    s+s1  #'i love python!!'

    第二种方法:格式化字符串 %s

    格式化字符串的%s部分称为转换说明符,标记了需要放置转换值的位置,通用术语为占位符。

    s='i'
    s1='love'
    s2='python'
    s3='%s '%s   #'i ' 单个可括号也可以不用
    s3='%s %s %s '%(s,s1,s2)   #'i love python ' 一一对应的(占位符)输出来的还是字符串

    第三种方法:''.join()方法
       S.join(iterable) -> str 只有一个参数,对象必须是可迭代(列表,元组,字符串)的,并且元素必须是字符串

    ''.join([s,s1,s2]) #'ilovepython'
    ' '.join([s,s1,s2]) #'i love python' 加了个空格
    ' '.join((s,s1,s2)) #用元组
    ' '.join('s,s1,s2') #失去了变量含义

    第四种方法:'{}'.format(s)
     跟第二种方法类似都有占位符 'i'

    #'{} {}'.format(s) #IndexError: tuple index out of range
    '{} {}'.format(s,s1) #括号和参数对应 'i love',当{}里面是空的时候,里面默认索引为0,1按format括号里的顺序依次填入
    '{0} {1} {2}'.format(s,s1,s2) #有索引的
    '{1} {2} {0}'.format(s,s1,s2) #可以变顺序
    '{1} {1} {1}'.format(s,s1,s2) #love love love
    '{0} {0} {0}'.format([s,s1,s2]) #"['i', 'love', 'python'] ['i', 'love', 'python'] ['i', 'love', 'python']"
    #因为第一个0 有一个列表元素,没有1索引
    '{0[0]} {0[1]} {0[2]}'.format([s,s1,s2]) #'i love python'
    #'{0} {0} {0}'.format(a=s,b=s1,c=s2) #指定了对象后,会失去位置,运行报错
    #IndexError: tuple index out of range(前面也要指定)
    #{}里面可以指定对象名称,后面通过赋值的方式给前面的相应的值,后面是无序的
    '{a} {c} {b}'.format(a=s,b=s1,c=s2) #后面指定了之后,前面必须要用名字指定位置

    format补充 也可以格式化输入

    '{}'.format(12.22)
    '{:.1f}'.format(12.22) #'12.2'  保留1位小数
    '{:.2%}'.format(12.2222) #'1222.22%'  百分比
    '{:<10}'.format(12) #'12        '  <左对齐,10代表输出占10位 '12 '
    '{:>10}'.format(12) #'        12'  >右对齐,输出占10位
    '{:^10}'.format(12) #'    12    '  居中
    '{:*^10}'.format(12) #'****12****' 用*来填充
    '{:a^10}'.format(12) #'aaaa12aaaa'

    2.格式化输出

    下面介绍基本转换说明符。注意,这些项的顺序至关重要:

    (1)%字符:标记转换说明符开始

    (2)转换标志(可选):-表示左对齐;+表示在转换值之前要加上正负号;0表示转换值位数不够时用0填充(大于0的话会被认成字段宽值);“ ”(空字符)表示正数之前保留空格

    (3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,宽度就会从值元组中读出

    (4)点(.)后跟精度值(可选):如果转换的是实数,精度值表示出现在小数点后的位数;如果转换的是字符串,该数字就表示最大字段宽度;如果是*,精度就会从元组中读出

    (5)转换类型

    %s 格式化字符串

    '%s'%'lucky' #'lucky'
    '%8s'%'lucky' #' lucky' 默认右对齐,前面用空格补齐 前面加数字表示宽度
    '%-8s'%'lucky' #'lucky ' -号表示左对齐
    '%s'%'%'  #%
    '%*s'%(10,565)  #'       565'

    %d 格式化整数

    '%d'%1.11 #'1' 输出的还是字符串
    print('%d'%1.111) #1 格式化整数

    %f 格式化小数

    若不指定精度,则默认输出6位小数

    '%f'%1.111 #'1.111000' 默认保留6位小数
    #m.n  m是显示的最小长度,当m大于格式化位数时才起作用显示m位,n是代表小数的位数。
    '%2f'%1.111 #长度为2,又保留6位小数 相当于2.6 默认先看精度
    '%.2f'%1.111 #保留2位小数
    '%6.2f'%1.111 #' 1.11'
    '%2.1f'%123.111111 #'123.1' 优先以精度为准
    '%06.2f'%1.111 #'001.11' #用0填充

    %c 格式化ASCII字符(把数字转换成字母)

    'a'>'A' #True
    '%c'%65 #'A'
    '%c'%97 #'a'

    %o 格式化八进制

    '%o'%7 #'7'
    '%o'%8 #'10'
    '%o'%16 #'20

    %x 格式化十六进制

    '%x'%16 #'10'
    '%x'%10 #'a'
    '%x'%15 #'f'

    %e 用科学计数法格式化

    '%e'%100 #'1.000000e+02'

    +号 显示后面数的正负

    '%+6.2f'%1.111 #' +1.11'
    '%+6.2f'%-1.111 #' -1.11'

    2.1转义字符
    换行 a 提示音(需要在cmd里)  退格 制表符

    print('www
    mmm')
    print(r'www
    mmm') #取消字符串的转义
    print(r'www\nmmm') #取消转义
    print('a')
    print('abde')
    print('abc	tt')

    3.深浅复制 (有嵌套的列表)

    元组和列表之间的相互嵌套(字符串里面都会变成字符串,失去列表和元组的方法),嵌套之后可以通过索引值来取数
    复制都是分配俩个地址,只不过浅复制只能复制外面的,复制不了嵌套在里面的
    同一个地址针对的是嵌套在里面序列类型
    ·浅复制:copy() 切片
    ·深复制:import copy copy.deepcopy()

    li=['a','b']
    lu=[1,li]
    lu #[1,['a','b']
    lu[1][1] #'b'
    lq=lu.copy() #[1,['a','b'] 属于浅复制
    id(lu) #57977352
    id(lq) #58255120
    id(lu[1]) #57977832
    id(lq[1]) #57977832
    import copy
    ls=copy.deepcopy(lu) #[1, ['a', 'b']]
    id(lu[1]) #57977832
    id(ls[1]) #58069800
    #说明内列表变了
    
    li.append('c')
    li #['a', 'b', 'c']
    lq #[1,['a', 'b', 'c']] #浅复制还是同一个对象
    ls #[1, ['a', 'b']] #深复制不是同一个对象了
    
    lqq=lu[:] #[1, ['a', 'b', 'c']]
    li.append('d') #[1, ['a', 'b', 'c', 'd']]
  • 相关阅读:
    Falcon
    资源
    资源
    Python的高级Git库 Gittle_python_脚本之家
    How to provide username and password when run "git clone git@remote.git"?
    Python项目自动化部署最佳实践@搜狐 | the5fire的技术博客
    Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
    Scaffold a Flask Project
    git python
    CentOS 删除自带的OpenJDK 和 安装SunJDK
  • 原文地址:https://www.cnblogs.com/pika-pika/p/8477965.html
Copyright © 2011-2022 走看看