格式化字符串

补充print—格式化字符串

1.0语法格式:

print(value,...,sep=' ',end='\n',flie=sys.stduot,flush=False)
等价于
print(value1,value2,...,,valuen,sep=' ',end='\n',flie=sys.stduot,flush=False)
a='1'
print(a*3)
print('%o' % 17)  #十进制强转为8进制
a,b,c,*d=1,2,3,4,5,6
print(type(d))
---> [4, 5, 6]
---> <class 'list'>
x=666
import sys
print(sys.stdout(x))
--->TypeError: '_io.TextIOWrapper' object is not callable
x=666
import sys
print(sys.stdout.write(x))
--->TypeError: write() argument must be str, not int
x=666
import sys
print(sys.stdout.write(str(x)))
--->6663

2.0格式化字符串

  • %格式化

  • 占位符

    格式描述
    %d有符号的整数
    %s字符串
    %c字符及ASCll码
    %o无符号八进制整数
    %x无符号十六进制整数
    %XABDCE 当X 大写 也是大写
    %e%E科学技术法,2.3E3=2300.0 e可以等价于*10
    %f浮点数

%格式化字符串 用%匹配参数,注意个数一一对应

a=100%
print('%d%%' % a) 第二个%为转义字符
--->100%

3.0format格式化字符串

(1)位置映射
print('name:{},age:{}'.format('tom',18))
--->name:tom,age:18
(2)关键字映射
print('name:{},age:{},{address}'.format('tom',18,address='gangzhou,hangzhou'))
关键字可以放在任何位置,但是映射只能在最后
print('name:{},age:{},{address}'.format('tom',18,address='gangzhou,hangzhou'))
print('第一个元素是:{0[0]} ,第二个元素是:{0[1]},第三个元素是:{0[2]},第四个元素是:{1[0]}'.format(('www.','google','com'),('baidu','com')))
--->第一个元素是:www. ,第二个元素是:google,第三个元素是:com,第四个元素是:baidu
(3)列表

字符串,数字都是一个不可更改的类型

用方括号括起来的[ ] ,每个元素以逗号分隔;

可以储存不同的数据类型

  • 特点
    • 是一个有序的

    • 可以重复的

    • 可变类型

3.3.1创建
li1=[1,2,3,'abcd','city','college',['l','love','you']]
print(li1)
3.3.2强转
sr = 'abcd'
li = list(sr)
print(li)
3.3.3拼接
li1=['i']
li2=['love']
li3=li1+li2
print(li3)
--->['i', 'love']
3.3.4重复
li2=['love']
print(li2*3)
--->['love', 'love', 'love']
3.3.5索引(偏移)[ ],切片[:],[::]
  • li=['c','i','t','y','city','college','zhejiang',['city','college','zhengjiang']]
    print(len(li))
    print(li[0],li[5])
    print(li[:5])
    print(li[::-1])
    print(li[7][1])
    --->8
    --->c college
    --->['c', 'i', 't', 'y', 'city']
    --->[['city', 'college', 'zhengjiang'], 'zhejiang', 'college', 'city', 'y', 't', 'i', 'c']
    ---> college
    
3.3.6增
  • append()增加
li=['city','college']
li1=['c','v','b']
li.append(li1)#li.append('s')
print(li)
--->['city', 'college', ['c', 'v', 'b']]
  • extend() 拓展(拆开元素增加)
li=['city','college']
li1=['c','v','b']
li.extend(li1)
print(li)
--->['city', 'college', 'c', 'v', 'b']
  • insert() 插入 按照索引添加,索引值不能超过范围
li=['city','college']
li1=['c','v','b']
li.extend(li1)
print(li)
li.insert(1,li1)
print(li)
--->['city', 'college', 'c', 'v', 'b']
--->['city', ['c', 'v', 'b'], 'college', 'c', 'v', 'b']

3.3.7改
li=['city','college']
li1=['c','v','b']
li.extend(li1)
print(li)
li.insert(1,li1)
print(li)
li[5]='666'
li[2:5]=['x','y','z']
print(li)
--->['city', ['c', 'v', 'b'], 'college', 'c', 'v', '666']
print(li)
--->['city', ['c', 'v', 'b'], 'x', 'y', 'z', '666']
3.3.8删除
  • pop()
  • 如果不指定索引,默认删除最后一个元素,本身会返回删除的元素
  • 删除指定对应元素
li=['a','b','c','d']
print(li.pop(2))
print(li)
--->c
--->['a', 'b', 'd']
  • remove 移除第一次遇到的指定元素
li=['a','b','c','d']
print(li.remove('c'))
print(li)
--->['a', 'b', 'd']
  • del 彻底删除
li=['a','b','c','d']
del li[3]
print(li)
--->['a', 'b', 'c']
(4)遍历

(1)元素遍历

li=['a','b','c','d']
for i in li:
  print(i,end=' ')
--->a b c d 

(2)索引遍历

li=['a','b','c','d']
for i in range(len(li)):
  print(li[i],end=' ')
--->a b c d 

(3)枚举遍历

  • enumerate(),对于一个可迭代的/可遍历的对象(如字符,列表等),将其组成一个索引序列,利用它,我们可以同时获得索引和值
li=['a','b','c','d']
for i in enumerate(li[:2],4):
  print(i)
--->(4, 'a')
    (5, 'b')   
(5)堆和栈,用列表实现
  • 计数,count(),查找元素出现的次数
  • 反转,reverse()
li=list('abcd')
print(li)
li.reverse()
print(li)
--->['a', 'b', 'c', 'd']
--->['d', 'c', 'b', 'a']
  • 排序,sort()
li=list('abcd')
print(li)
li.reverse()
print(li)
li.sort()
print(li)
li.sort(reverse=True)
print(li)
--->['a', 'b', 'c', 'd']
--->['d', 'c', 'b', 'a']
--->['a', 'b', 'c', 'd']
--->['d', 'c', 'b', 'a']
(6)赋值与深浅拷贝
  • 赋值是引用的对象
la = [1,2,3,4,5,'a',['b1','b2']]
lb =la
print(la,lb)
print(la)
print(lb)
print(id(la),id(lb))
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
--->1782454496136 1782454496136
  • 深浅拷贝
    • 浅拷贝会创建新对象,内容是元对象的引用。浅拷贝相当于我们只拷贝了一层,修改外层元素,会修改引用,让他们指向另一个位置;
    • 修改嵌套列表的元素,列表地址没有发生变化,指的还是同一位置
    • 三种实现方法:
      • 切片操作:[:]
      • 工厂函数:list(li)
      • copy模块被的copy函数
la = [1,2,3,4,5,'a',['b1','b2']]
lb =la
lb2=la[:]
print(id(la),id(lb2))
import copy
lb_copy= copy.copy(la)
print(id(la),id(lb_copy))
--->1688912997256 1688912920904
--->1688912997256 1688914528584
la.append('test')#添加原子类型,不会影响lb_opy
print(la)
print(lb_copy)
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2'], 'test']
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
  • 深拷贝
  • 拷贝对象的所有元素,包括多层嵌套元素。
  • 因此,是开辟了一个新的内存储存区,和数据源没有关系了。
import copy
la = [1,2,3,4,5,'a',['b1','b2']]
lb_deepcopy=copy.deepcopy(la)
print(la,id(la))
print(lb_deepcopy,id(lb_deepcopy))
la[6][1]='aaa'
print(la)
print(lb_deepcopy)
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2091637115272
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2091637116552
--->[1, 2, 3, 4, 5, 'a', ['b1', 'aaa']]
--->[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
(7)列表
  • 列表解析式
li=[]
for i in range(10):
    li.append(i)
print(li)
print([x for x in range(10) if x%2==0])
--->[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
--->[0, 2, 4, 6, 8]
sr='城市学院'
print([ord(x) for x in sr])
--->[22478, 24066, 23398, 38498]
  • 列表生成式,用来生成列表的特定的语法形式

  • 格式:

[表达式 for 迭代元素 in 可迭代对象]
  • 实现原理
迭代[可迭代对象]中的每一个元素
每迭代一次的结果赋值给对应的迭代元素,在通过表达式运算得到一个新的值
最后所有的表达式计算的值以一个列表的形式返回。
  • 三目运算符
y=10
x=y+1 if y>10 else y-1
print(x)
--->9
  • 带过滤功能格式
[exp for iter_val in iter if if_condition]
li=[]
for iter_val in iter:
     if if_condition:
         li.append(iter_val)
print(li)
(8)元组
  • 有序

  • 不可以重复

  • 不可以更改

  • 符号使用: ()

元组的创建,单元素元组的创建
  • 有逗号才是单元素的元组
tp=('sd',)
print(type(tp))
---><class 'tuple'>
多元素元组的创建,包含多种数据类型
  • 拼接
  • 重复
  • 索引(偏移) 切片[ : ]
  • index() 中间填入所要搜索的元素,返回值为第几位
  • 增不能
  • 不可以删除某一个元素,但可以删除全部 del
tp=('sd','sdaw',['sda','sss'])
tp1=('ss',)
print(tp*3)
print(tp+tp1)
print(tp[0:2])
tp[2][1]='123'
print(tp)
--->('sd', 'sdaw', ['sda', 'sss'], 'sd', 'sdaw', ['sda', 'sss'], 'sd', 'sdaw', ['sda', 'sss'])
--->('sd', 'sdaw', ['sda', 'sss'], 'ss')
--->('sd', 'sdaw')
--->('sd', 'sdaw', ['sda', '123'])
del tp
print(tp)
--->name 'tp' is not defined
  • 遍历 索引 枚举enumerate
tp=('sd','sdaw',['sda','sss'])
for i in tp:
    print(i,end=' ')
for i in range(len(tp)):
    print(tp[i],end=' ')
for i in enumerate(tp[:],2):
    print(i,end=' ')
--->sd sdaw ['sda', 'sss'] sd sdaw ['sda', 'sss'] (2, 'sd') (3, 'sdaw') (4, ['sda', 'sss']) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值