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.以逗号隔开的元素一起输出会以元组形式输出
>>> a,b,c,*d = 1,2,3,4,5,6 >>> a 1 >>> b 2 >>> c 3 >>> d [4, 5, 6]语法格式:
print(value,...,sep=' ',end='\n',file=sys.stdout,flush=False)等价于
print(value1,value2,value3,...,valuen,sep=' ',end='\n',file=sys.stdout,flush=False) >>> a,b,c,*d = 1,2,3,4,5,6 >>> print(a,b,c,d) 1 2 3 [4, 5, 6] >>> print(a,b,c,d,sep='$') 1$2$3$[4, 5, 6] >>> x = 666 >>> import sys >>> sys.stdout.write(str(x)) 6663 >>> y = 66 >>> sys.stdout.write(str(y)) 662输出格式化:
name = "Kate" age = 20 print("his name is %s, his age is %d." % (name, age)) print("his name is", name, ',his age is', age, '.') print("his name is " + name + ' his age is ' + str(age) + '.')%格式化字符串,用%匹配参数,注意个数一一对应
>>> "%d%%" % 100 '100%'%格式化和format格式化,字符串对齐
字符串和数字的id都是不可更改的
(1)拼接
li1 = ['i'] li2 = ['love', 'python'] print(li1, li2) #输出结果:['i'] ['love', 'python'](2)重复
li2 = ['love', 'python'] print(li2 * 3) #输出结果:['love', 'python', 'love', 'python', 'love', 'python'](3)索引(偏移)
li = ['c', 'i', 't', 'y', 'city', 'college', 'zhejiang', ['city', 'college', 'zhejiang']] print(len(li)) print(li[0], li[-7]) print(li[:5]) print(li[:-1]) print(li[4][1]) print(li[7][1]) ''' 输出结果: 8 c i ['c', 'i', 't', 'y', 'city'] ['c', 'i', 't', 'y', 'city', 'college', 'zhejiang'] i college '''(4)强转
sr = 'abcd' li = list(sr) print(li, type(li)) #输出结果:['a', 'b', 'c', 'd'] <class 'list'>增
append() li = ['city', 'college'] print(id(li)) li1 = ['a', 'b', 'c'] li.append(li1) print(li, id(li)) #输出结果:2542289494920 #['city', 'college', ['a', 'b', 'c']] 2542289494920 sr = '城市学院' li = [] for i in sr: li.append(ord(i)) print(li) #输出结果:[22478, 24066, 23398, 38498] expend() li = ['city', 'college'] li1 = ['a', 'b', 'c'] li.extend(li1) print(li) #输出结果:['city', 'college', 'a', 'b', 'c'] insert() li = ['city', 'college'] li1 = ['a', 'b', 'c'] li.insert(1, li1) print(li) #输出结果:['city', ['a', 'b', 'c'], 'college']改
extend() li = ['city', 'college'] li1 = ['a', 'b', 'c'] li.extend(li1) li[2:6] = ['x', 'y', 'z'] print(li) #输出结果:['city', 'college', 'x', 'y', 'z'] li[5] = '666' print(li) #输出结果:['city', 'college', 'a', 'b', '666']删
pop() (如果不指定索引,默认删除最后一个元素;删除指定索引对应的元素) li = ['a', 'b', 'c', 'd', 'e'] print(li.pop(2)) print(li) #输出结果:c #['a', 'b', 'd', 'e'] remove() (移除第一次遇到的指定元素) li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] print(li.remove('e')) print(li) #输出结果:None #['a', 'b', 'c', 'd', 'city', 'e'] del() (将列表全部删除,列表不存在) li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] del li[5] print(li) #输出结果:['a', 'b', 'c', 'd', 'e', 'e'] clear() (只是将列表内的元素清空,列表仍存在) li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] li.clear() print(li) #输出结果:[]查
sorted() (排序,默认正序,加入reverse =True,则表示倒序) #正序 num =[11,55,88,66,35,42] print(sorted(num)) -->数字排序 name =["xiaowu","little-five","James"] print(sorted(name)) -->字符串排序 #输出为:[11, 35, 42, 55, 66, 88] #['James', 'little-five', 'xiaowu'] #倒序 num =[11,55,88,66,35,42] print(sorted(num,reverse=True)) #输出为:[88, 66, 55, 42, 35, 11]遍历
元素遍历 li = ['a', 'b', 'c'] for i in li: print(i) ''' 输出结果: a b c ''' 索引遍历 li = ['a', 'b', 'c'] for i in range(len(li)): print(li[i]) ''' 输出结果: a b c ''' 枚举遍历 (用enumerate(),对于一个可迭代的/可遍历的对象(如列表,字符串等),enumerate()将其组成一个索引序列,利用它,我们可以同时获得索引和值) li = ['a', 'b', 'c'] for i in enumerate(li,2): print(i) ''' 输出结果: (2, 'a') (3, 'b') (4, 'c') ''' #同上 li = ['a', 'b', 'c'] for index,value in enumerate(li,2): print(index,value)堆和栈,用列表实现
其他操作
计数,count(),查找元素出现的次数反转,reverse() (内部元素必须得是同一种数据类型,不然无法进行比较) li = list('abcd') print(li) li.reverse() print(li) ''' 输出结果: ['a', 'b', 'c', 'd'] ['d', 'c', 'b', 'a'] ''' 排序,sort() (按照ASCII码值排序) li = list('abcd') print(li) li.sort(reverse=True) print(li) ''' 输出结果: ['a', 'b', 'c', 'd'] ['d', 'c', 'b', 'a'] '''例题:
# 1、input()函数实现往空列表中添加元素,当输入"q"的时候,结束输入,并返回列表. li = [] while 1: inp = input('请添加元素:') if inp == 'q': break else: li.append(inp) print(li) ''' 输出结果: 请添加元素:a 请添加元素:b 请添加元素:c 请添加元素:q ['a', 'b', 'c'] ''' # 随机生成30个0-10的随机整数,并统计每个数出现的次数,返回的结果形式为[[0,3],[1,4],...[10,5]] import random rand_int = [] result_li = [] for i in range(30): rand_int.append(random.randint(0, 10)) print(rand_int) sum = 0 for i in range(0, 11): result_li.append([i, rand_int.count(i)]) sum += rand_int.count(i) print(result_li) print(sum) ''' 输出结果: [4, 1, 4, 3, 6, 8, 9, 9, 0, 5, 1, 2, 5, 6, 3, 4, 6, 10, 7, 5, 1, 2, 10, 8, 10, 6, 7, 8, 4, 2] [[0, 1], [1, 3], [2, 3], [3, 2], [4, 4], [5, 3], [6, 4], [7, 2], [8, 3], [9, 2], [10, 3]] 30 '''笔记:在python中的random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b,下限必须小于上限。
格式:
[表达式 for 迭代元素 in 可迭代对象]实现原理:
迭代[可迭代对象]中的每一个元素每迭代一次的结果直接赋值给对应的迭代元素,在通过表达式运算得到一个新的值最后所有通过表达式计算的值以一个列表的形式返回。带过滤功能
[exp for iter_val in iter if if_condtion]
**三目运算符 **
y = 10 x = y + 1 if y > 10 else y - 1 print(x) #输出结果:9 y = 12 x = y + 1 if y > 10 else y - 1 print(x) #输出结果:13 for嵌套 name = ['Tom', 'Jack', 'Lucy'] subject = ['Python', 'Java', 'C', 'C++'] li = [] for i in name: for j in subject: li.append([i, j]) print(li) ''' 输出结果: [['Tom', 'Python'], ['Tom', 'Java'], ['Tom', 'C'], ['Tom', 'C++'], ['Jack', 'Python'], ['Jack', 'Java'], ['Jack', 'C'], ['Jack', 'C++'], ['Lucy', 'Python'], ['Lucy', 'Java'], ['Lucy', 'C'], ['Lucy', 'C++']] ''' #同上 print([[i, j] for i in name for j in subject])**赋值:**原文件和赋值文件是同一个东西(内容一样,id也一样),原文件的改变会引起赋值文件的改变
浅拷贝会创建新对象,内容是原对象的引用
三种实现方法
1、切片操作[ : ] la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb = la lb2 = la[:] print(id(la)) print(id(lb2)) ''' 输出结果: 2147844957320 2147845785416 ''' 2、工厂函数list(li)copy模块内的copy函数
import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_copy = copy.copy(la) print(la, id(la)) print(lb_copy, id(lb_copy)) ''' 输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2080865809416 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2080865810696 ''' import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_copy = copy.copy(la) la.append('test') 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_copy = copy.copy(la) print(la, id(la)) print(lb_copy, id(lb_copy)) la[6][1] = 'aaa' print(la) print(lb_copy) ''' 输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2477357691912 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2477357693192 [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] '''**浅拷贝:**拷贝文件和原文件是两个不同的东西(内容一样,id不一样),原文件内容的浅层改变(元组内所有元素除了元组内元组元素)不会影响拷贝文件的内容,具体见深浅拷贝对比
深拷贝
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']] 2171730097224 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2171730098504 [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] ''' 浅拷贝相当于我们只拷贝了一层,修改外层元素,会修改引用,让它们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置。
深拷贝拷贝对象的所有元素,包括多层嵌套的元素;是开辟了一个新的内存储存区,和数据源没有关系了。
实例对比: #浅拷贝 import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_copy = copy.copy(la) print(la, id(la)) print(lb_copy, id(lb_copy)) la[6][1] = 'aaa' print(la) print(lb_copy) ''' 输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2477357691912 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2477357693192 [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] ''' #深拷贝 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']] 2171730097224 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2171730098504 [1, 2, 3, 4, 5, 'a', ['b1', 'aaa']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] '''Python 的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。符号使用()
tp = ()
注意:需要在单元素后面添加逗号
tp = () print(type(tp)) tp1 = ('abc') print(type(tp1)) yp2 = ('abc',) print(type(yp2)) ''' 输出结果: <class 'tuple'> <class 'str'> <class 'tuple'> '''包含多种数据类型:
拼接重复索引(偏移) 切片注意:删完之后重新赋值,若内容和删之前的一样,则id不变;若内容改变,则id改变
改,不行,元组不能修改 tp = (1, 2, 3, 'a', 'b', 'c', ['a', 'b', 'c']) print(tp) print(tp[2]) print(tp[6]) tp[6][2] = 'bb' print(tp) ''' 输出结果: (1, 2, 3, 'a', 'b', 'c', ['a', 'b', 'c']) 3 ['a', 'b', 'c'] (1, 2, 3, 'a', 'b', 'c', ['a', 'b', 'bb']) ''' tp = (1, 2, 3, 'a', 'b', 'c', ['a', 'b', 'c']) tp[2] = 33 print(tp) #输出结果:报错(原因:元组不可修改) 查,可以 tp = (1, 2, 3, 'a', 'b', 'c', ['a', 'b', 'c']) print(tp.index('a')) #输出结果:3 tp = (1, 2, 3, 'a', 'b', 'c', ['aa', 'bb', 'cc']) print(tp[6].index('bb')) #输出结果:1 最大值、最小值 print(max(tp), min(tp))遍历
元素遍历 tp = ('a', 'b', 'c') for i in tp: print(i, end=" ") #输出结果:a b c 索引遍历 tp = ('a', 'b', 'c') for i in range(len(tp)): print(tp[i], end=" ") #输出结果:a b c 枚举遍历enumerate tp = ('a', 'b', 'c') for i in enumerate(tp, 2): print(i) ''' 输出结果: (2, 'a') (3, 'b') (4, 'c') '''