day3

it2022-05-05  154

文章目录

print()函数查看帮助文件格式化字符串%号格式化占位符 formar格式化(1)位置映射(2)关键字映射(3)元素访问 列表赋值与深浅拷贝赋值深浅拷贝列表解析式 元组

print()函数查看帮助文件

>>> help(print) Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.

语法格式:

print(value,...,sep='',end='\n',file=sys,flush=false)

等价于

格式化字符串

%号格式化

占位符

格式化符号说明%c转换成字符(ASCII 码值,或者长度为一的字符串)%r优先用repr()函数进行字符串转换%s优先用str()函数进行字符串转换%d / %i转成有符号十进制数%u转成无符号十进制数%o转成无符号八进制数%x / %X转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)%e / %E转成科学计数法(e / E控制输出e / E)%f / %F转成浮点数(小数部分自然截断)%g / %G%e和%f / %E和%F 的简写%%输出% (格式化字符串里面包括百分号,那么必须使用%%)

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

“%d%%” 0 >>>>0

name = "tom" age = 18 print("His name is %s, his age is %d."% (name, age)) print("His name is", name,",his age is", age,".")

formar格式化

(1)位置映射

print("name:{},age:{}".format('tom',18))

(2)关键字映射

print("name:{},age:{},{address}".format('tom',18,address = "gongshu,hangzhou"))

注:关键字一定要放在后面

(3)元素访问

print("第一个元素是:{0[0]},第二个元素是:{0[1]},第三个元素是:{0[2]};\ >>>(换行符) 第四个元素:{1[0]},第五个元素:{1[1]}".format(('www','google','com'),("baidu.","com")))

列表

列表使用方括号括起来的[],每个元素以逗号分割;

可以储存不同的数据类型数据

数组

特点:

是一个有序的可以重复的可变类型

创建

创建空列表

li = [] print(type(li))

创建多元素列表

li = [1,2,3,'abcd','city','college',['i','love']]

强转

sr = 'abcd' li = list(sr) >>> li = ['a','b','c','d']

拼接

li1 = ["i"] li2 = ["love"] print(li1 + li2)

索引 (偏移) [], 切片[:],[::]

li = ["c","i","t","y","city","college","zhejiang"] print(len(li)) print((li[0],li[-7])) print(li[:5]) print(li[::-2]) print(li[4][1]) >>> 7 ('c', 'c') ['c', 'i', 't', 'y', 'city'] ['zhejiang', 'city', 't', 'c'] i

增删改查

1 list.append(obj) 在列表末尾添加新的对象,将整体插入进去 2 list.count(obj) 统计某个元素在列表中出现的次数 3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 5 list.insert(index, obj) 将对象(整体)插入列表 6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 7 list.remove(obj) 移除列表中某个值的第一个匹配项 8 list.reverse() 反向列表中元素 9 list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序

str_new = 'hkt lzy love' list1 = str_new.split(' ') print(list1) list2 = ['hkt','lzy','love'] list3 = [22, 20, 21, 26, 18] print(id(list1), id(list2)) print(list1 == list2) # == 判断两个变量的值大小是否一致 print(list1 is list2) # is 判断两个变量的内存地址 print(list2[0:2]) # 列表的截取 print(len(list2)) # len 获取列表长度 print(max(list3)) # max 获取列表的最小值 print(min(list3)) # min 获取列表的最小值 list3.pop(2) # pop 删除下标为2的元素 print(strip(list3)) # strip 去首尾空格 list3.append(100) # append 向列表里面追加一个元素 list3.extend(list2) # extend 向列表里追加另一个列表的所有元素 list3.insert(1, 999) # insert 指定下标添加一个元素 若加入字母要加引号 list3.remove(26) # remove 删除在指定值的元素 list3[1] = 10 #指定下标修改其对应的值 list3.clear() # 清空列表里面的元素 del list3 # 删除列表 释放其空间 del list1[] #删除指定下标元素

遍历

(1)元素遍历

li = ["a","b","c"] for i in li: print(i) >>> a,b,c

(2)索引遍历

li = ["a","b","c"] for i in range(len(li)): print(li[i])

(3)枚举遍历

enumerate(),对于一个可迭代的/可遍历的对象(如列表,字符串等)

enumerate() 将其组成一个索引序列,利用它,我们可以同时获得索引和值

li = ["a","b","c"] for i in enumerate(li,2): print(i) >>> (2, 'a') (3, 'b') (4, 'c')

堆和栈,用列表实现

其它操作

list.reverse # 将列表的元素顺序翻转 print(list.count(20)) # count 统计某一元素在列表中出现的次数 list.sort(reverse=false) # 将列表按其元素的值进行排序 false是升序 ture是降序

例:

input()函数实现往空列表中添加元素,当输入”q“时,结束输入,并返回列表

li = [] while True: inp = input("请输入元素:\t") if inp == "q": break else: li.append(inp) print(li)

随机生成30个0-10的随机整数,并统计每个数出现的次数,返回的结果形式为[[0,3],[1,4],…[10,5]]

import random list_1 = [] list_2 = [] for i in range(30): list_1.append(random.randint(0,10)) print(list_1) for i in range(11): list_2.append([i,list_1.count(i)]) print(list_2)

赋值与深浅拷贝

赋值

赋值是对对象的引用

深浅拷贝

浅拷贝会创建新对象,内容是原对象的引用

三种实现方法:

切片操作 [:]

工厂函数list(li)

copy模块内的copy函数。

ia = [1,2,3] ib = ia ib2 =ia[:] print(id(ia),id(ib2)) >>> 1738099483272 1738099483336 import copy ib_copy = copy.copy(ia) print(id(ia),id(ib_copy)) >>> 1652412670600 1652442860808 ia.append('test') #添加原子类型,不会影响ib_copy print(ia) print(ib_copy) >>> [1, 2, 3, 'test'] [1, 2, 3]

深拷贝

import copy ia = [1,2,3,'a',['b1','b2']] ib_deepcopy = copy.deepcopy(ia) print(ia,id(ia)) print(ib_deepcopy,id(ib_deepcopy)) ia[4][1] = "aaa" print(ia) print(ib_deepcopy) >>>[1, 2, 3, 'a', ['b1', 'aaa']] [1, 2, 3, 'a', ['b1', 'b2']]

对象的引用

浅拷贝相当于我们只拷贝了一层,修改外层元素,会修改引用,让它们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置。

深拷贝拷贝对象的所有元素,包括多层嵌套的元素。因此,是开辟了一个新的内存储存区,和数据源没有关系了。

列表解析式

print([x for x in range(10)]) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print([x for x in range(10) if x%2==0]) >>> [0, 2, 4, 6, 8]

列表生成式,用来生成列表特定的语法形式

sr = '城市学院' print([ord(x) for x in sr]) >>> [22478, 24066, 23398, 38498]

格式:

[exp for iter_val in iter]

实现原理:

迭代[可迭代对象]中的每一个元素每迭代一次的结果赋值给对应的迭代元素,在通过表达式运算得到一个新的值最后所有通过表达式计算的值以一个列表的形式返回。

三目运算符

y = 10 x = y+1 if y>10 else y-1 print(x)

带过滤功能格式

[exp for iter_val in iter if if_condtion] 例:将下列两表一一对应起来 name = ["tom","jack","lucy"] subject = ["python","java","c","c++"] li = [] print([[i,j] for i in name for j in subject ]) 》》》[['tom', 'python'], ['tom', 'java'], ['tom', 'c'], ['tom', 'c++'], ['jack', 'python'], ['jack', 'java'], ['jack', 'c'], ['jack', 'c++'], ['lucy', 'python'], ['lucy', 'java'], ['lucy', 'c'], ['lucy', 'c++']]

元组

有序可以重复的不可更改

元组的创建

空元组的创建,不能添加元素

单元素元组的创建,要在单元素后面添加逗号

tp = () tp = ("abc",)

多元素元组的创建,包含多种数据类型

(1)拼接

(2)重复

(3)索引(偏移) 切片

索引查

切片查

index()

tp = (1,2,3,"a","b",["aa","bb"]) print(tp.index("a")) >>> 3 print(tp[5].index("aa")) >>> 0

增,不能

删,删除某个元素,不能;但可以全部删掉

tup = ('physics', 'chemistry', 1997, 2000) print tup del tup print "After deleting tup : " print tup

元组内置函数

​ cmp(tuple1, tuple2) 比较两个元组元素。 ​ len(tuple) 计算元组元素个数。 ​ max(tuple) 返回元组中元素最大值。 ​ min(tuple) 返回元组中元素最小值。 ​ tuple(seq) 将列表转换为元组。

遍历

元素遍历

索引遍历

枚举遍历enumrate

for i in tp: print(i) for i in range(len(tp)): print(tp[i]) for i in enumerate(tp,0): print(i) >>> (0, 1) (1, 2) (2, 3) (3, 'a') (4, 'b')

最新回复(0)