1、作用列表,是用于按位置存放多个值的数据类型。即专门用来记录多个同种属性的值(比如同一个班级多个学生的姓名、同一个人的多个爱好等),并且存取都十分方便。2、定义 # 定义:在[]内,用逗号分隔开多个任意数据类型的值l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])
3、类型转换—但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表 res=list('hello')print(res)res=list({'k1':111,'k2':222,'k3':3333})print(res)
4、使用4.1 取值与嵌套[url=][/url]
# 1、列表类型是用索引来对应值,索引代表的是数据的位置,从0开始计数>>> stu_names=['张三','李四','王五']>>> stu_names[0] '张三'>>> stu_names[1]'李四'>>> stu_names[2]'王五'# 2、列表可以嵌套,嵌套取值如下>>> students_info=[['tony',18,['jack',]],['jason',18,['play','sleep']]]>>> students_info[0][2][0] #取出第一个学生的第一个爱好'play'[url=][/url]
4.2 内置方法优先掌握的操作: [url=][/url]
1、按索引存取值(正向存取+反向存取):即可以取也可以改l=[111,'egon','hello']正向取print(l[0])反向取print(l[-1])可以取也可以改:索引存在则修改对应的值l[0]=222print(l)
无论是取值操作还是赋值操作:索引不存在则报错
l[3]=333[url=][/url]
[url=][/url]
# 2、切片(顾头不顾尾,步长)l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]print(l[0:3])print(l[0:5:2]) # 0 2 4print(l[0:len(l)])print(l[:])new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copyprint(id(l))print(id(new_l))# l[-1][0]=1111111print(l)print(new_l)# print(l[::-1])# msg1='hello:egon:<>:18[]==123'msg2=msg1[:]print(msg1,id(msg1))print(msg2,id(msg2))[url=][/url]
3、长度print(len([1, 2, 3]))
4、成员运算in和not inprint('aaa' in ['aaa', 1, 2])print(1 in ['aaa', 1, 2])
[url=][/url]
5、往列表中添加值5.1 追加l=[111,'egon','hello']l.append(3333)l.append(4444)print(l)5.2、插入值l=[111,'egon','hello']l.insert(0,'alex')print(l)5.3、extend添加值new_l=[1,2,3]l=[111,'egon','hello']l.append(new_l)print(l)代码实现for item in new_l: l.append(item)print(l)extend实现了上述代码l.extend(new_l)l.extend('abc')print(l)[url=][/url]
[url=][/url]
6、删除方式一:通用的删除方法,只是单纯的删除、没有返回值l = [111, 'egon', 'hello']del l[1]x =del l[1] # 抛出异常,不支持赋值语法print(l)方式二:l.pop()根据索引删除,会返回删除的值l = [111, 'egon', 'hello']l.pop() # 不指定索引默认删除最后一个l.pop()print(l)res=l.pop(1)print(l)print(res)方式三:l.remove()根据元素删除,返回Nonel = [111, 'egon', [1,2,3],'hello']l.remove([1,2,3])print(l)res=l.remove('egon')print(res) # None[url=][/url]
7、循环l=[1,'aaa','bbb']for x in l: l.pop(1) print(x)
需要掌握操作
[url=][/url]
l = [1, 'aaa', 'bbb','aaa','aaa']1、l.count()print(l.count('aaa'))# 2、l.index()print(l.index('aaa'))print(l.index('aaaaaaaaa')) # 找不到报错# 3、l.clear()l.clear()print(l)# 4、l.reverse():不是排序,就是将列表倒过来l = [1, 'egon','alex','lxx']l.reverse()print(l)# 5、l.sort(): 列表内元素必须是同种类型才可以排序l=[11,-3,9,2,3.1]l.sort() # 默认从小到大排,称之为升序l.sort(reverse=True) # 从大到小排,设置为降序print(l)# l=[11,'a',12]l.sort()# l=['c','e','a']l.sort()print(l)[url=][/url]
[url=][/url]
了解:字符串可以比大小,按照对应的位置的字符依次pk字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的print('a'>'b')print('abz'>'abcdefg')#了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型l1=[1,'abc','zaa']l2=[1,'abc','zb']print(l1 < l2)[url=][/url]
补充——队列-堆栈 [url=][/url]
补充1、队列:FIFO,先进先出l=[]# 入队操作l.append('first')l.append('second')l.append('third')print(l)# 出队操作print(l.pop(0))print(l.pop(0))print(l.pop(0))2、堆栈:LIFO,后进先出l=[]# 入栈操作l.append('first')l.append('second')l.append('third')print(l)# 出队操作print(l.pop())print(l.pop())print(l.pop())[url=][/url]
4.3 深浅copy---未完待续
二、元祖 1、作用元组就是"一个不可变的列表"按照索引/位置存放多个值,只用于读,不用于改2、定义 定义:()内用逗号分隔开多个任意类型的元素t=(1,1.3,'aa') # t=tuple((1,1.3,'aa'))print(t,type(t))
[url=][/url]
x=(10) # 单独一个括号代表包含的意思print(x,type(x))t=(10,) # 如果元组中只有一个元素,必须加逗号print(t,type(t))t=(1,1.3,'aa') # t=(0->值1的内存地址,1->值1.3的内存地址,2->值'aaa'的内存地址,)t[0]=11111t=(1,[11,22]) # t=(0->值1的内存地址,1->值[1,2]的内存地址,)print(id(t[0]),id(t[1]))# t[0]=111111111 # 不能改# t[1]=222222222 # 不能改t[1][0]=11111111111111111# print(t)print(id(t[0]),id(t[1]))[url=][/url]
3、数据转换 print(tuple('hello'))print(tuple([1,2,3]))print(tuple({'a1':111,'a2':333}))
4、内置方法1、按索引取值(正向取+反向取):只能取t=('aa','bbb','cc')print(t[0])print(t[-1])
2、切片(顾头不顾尾,步长)t=('aa','bbb','cc','dd','eee')print(t[0:3])print(t[::-1])
[url=][/url]
3、长度t=('aa','bbb','cc','dd','eee')print(len(t))4、成员运算in和not inprint('aa' in t)5、循环for x in t: print(x)6、t=(2,3,111,111,111,111)print(t.index(111))print(t.index(1111111111))print(t.count(111))[url=][/url]
|
|