列表是用方括号括起来的[ ],每个元素以逗号分隔;
可以储存不同的数据类型数据
特点
是一个有序的可以重复的可变类型clear() 全部清空
li = ["city","College",1,2,3,2] li.clear() print(li)遍历
元素遍历 li = ["a","b","c","d"] for i in li: print(i) 索引遍历 li = ["a","b","c","d"] for i in range(len(li)): print(li[i]) 枚举遍历: enumerate( ),对于一个可迭代的/可遍历的对象(列表,字符串等)
li = ["a","b","c","d"] for i in enumerate(li,2): print(i) enumerate( ),将其组成一个索引序列,利用它,我们可以同时获得索引值
li = ["a","b","c","d"] for index,value in enumerate(li[:2],2): print(index,value)交集:
li1 = ["a","b","c","e"] li2 = ["a","c","f","g"] li3 = [] for i in range(len(li1)): for j in range(len(li2)): if li2[j]==li1[i]: li3.append(li2[j]) print(li3)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 ran_int = [] result_li = [] for i in range(30): ran_int.append(random.randint(0,10)) for i in range(11): result_li.append([i,ran_int.count(i)]) print(result_li)赋值是对对象的引用
la = [1,2,3,4,5,"a",["b1","b2"]] lb = la print(la) print(lb) print(la is lb) la[5] = "666" print(la is lb) #指向同一区域还是相同深浅拷贝
浅拷贝会创建新对象,内容是原对象的引用(copy后最外层不会变,里层还是会一起变动)
三种方法实现
切片操作[:]工厂函数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)) la.append("test") #添加原子类型,不会影响lb_copy print(la) print(lb_copy)深拷贝
import copy la = [1,2,3,4,5,"a",["b1","b2"]] lb_deepcopy =copy.deepcopy(la) la[5] = ["aaa"] print(la,lb_deepcopy) la[6][0]="aaaaa" print(la,lb_deepcopy)对象引用
浅拷贝:相当于我们只拷贝了一层,修改外层元素,会修改引用,让他们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置。深拷贝:拷贝对象的所有元素,包括多层嵌套元素。因此,是开辟了一个新的内部存储区,和数据源没有关系了。用来生成列表的特定语法形式
sr = "城市学院" print([ord(x) for x in sr])格式:
[表达式 for 迭代元素 in 可迭代对象 if if条件] [exp for iter_val in iter if if_condtion] name = ["Tom","Jack","Alice"] subject = ["Python","Java","C","C++"] li = [] for i in name: for j in subject: li.append([i,j]) print(li) print([[i,j] for i in name for j in subject])实现原理:
迭代[可迭代对象]中的每一个元素
每迭代一次的结果赋值给对应的迭代元素,在通过表达式运算中得到一个新的值
最后所有通过表达式计算的值以一个列表的形式返回。
符号使用():
定义:空元组的创建,不能添加元素
单元素元组的创建,需要在单元素后面加个“,”
li = [] tp = () print(type(tp)) tp = ("abc") print(type(tp)) tp = ("abc",) print(type(tp))多元素元组的创建,包含多种数据类型
索引查
切片查
index( )
tp = ("def",666,"a","b","c",[1,2,3]) print(tp.index("a"))增 不能操作
删 不能;但是可以全部删除 del tp(地址还是不变)
改 第一层不能操作
枚举enumerate
enumerate( ),对于一个可迭代的/可遍历的对象(列表,字符串等) tp = ("def","a","b","c") for i in enumerate(tp,2): print(i) enumerate( ),将其组成一个索引序列,利用它,我们可以同时获得索引值 tp = ("def","a","b","c") for index,value in enumerate(tp[:2],2): print(index,value)