一、列表
列表的定义
>>> list_1 = ['egon','male',19] >>> list_2 = list(['tank','male',18]) >>> print(type(list_1),type(list_2)) <class 'list'> <class 'list'> >>>
类型转换
但凡能够被for循环遍历的类型(可迭代对象)都可以当做参数传给list()转换成列表
>>> print(type(list_1),type(list_2)) <class 'list'> <class 'list'> >>> print(list('hello'),type(list('hello'))) ['h', 'e', 'l', 'l', 'o'] <class 'list'> >>> print(list([11,22]),type(list([11,22]))) [11, 22] <class 'list'> >>> print(list({'name':'egon'}),type(list({'name':'egon'}))) ['name'] <class 'list'> >>>
- 内置方法
优先掌握的操作:
(1)按照索引取值(正向取+反向取),可以取也可以写
>>> list_1 = ['name','male','age'] >>> print(list_1[0],list_1[-1]) name age >>> >>> list_1[2] = 'hobby' >>> print(list_1) ['name', 'male', 'hobby'] >>> 无论是赋值还是取值操作,索引不存在则报错 >>> print(list_1[3]) Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> print(list_1[3]) IndexError: list index out of range >>> list_1[3] = 'age' Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> list_1[3] = 'age' IndexError: list assignment index out of range >>>
- 切片操作
切片操作的本质是:浅拷贝 >>> list_1 = [11,222,333,444,666,777] >>> print(list_1[0:4:2]) [11, 333] 反向切 >>> print(list_1[::-1]) [777, 666, 444, 333, 222, 11] >>>
- 长度(len)
>>> list_1 = [11,222,333] >>> print(len(list_1)) 3 >>>
- 成员运算 in / not in
>>> print('egon' in ['egon','male',19]) True >>> >>> print('tank' not in ['egon','male',19]) True >>>
- 忘列表中添加值append
>>> list_1 = ['tank','male',19] >>> list_1.append('play') >>> print(list_1) ['tank', 'male', 19, 'play'] >>>
- 往列表中插入值insert
>>> list_1.insert(0,'0001') >>> print(list_1) ['0001', 'tank', 'male', 19, 'play'] >>>
- 往原列表中添加一个新的列表
>>> list_1 = [1,2,3] >>> list_1.extend([4,5,6]) >>> print(list_1) [1, 2, 3, 4, 5, 6] >>> # 代码实现 # for item in new_l: # l.append(item) # print(l) # extend实现了上述代码 # l.extend(new_l) # l.extend('abc') # print(l)
- 删除
# 方式一:通用的删除方法,只是单纯的删除、没有返回值 # 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()根据元素删除,返回None # l = [111, 'egon', [1,2,3],'hello'] # l.remove([1,2,3]) # print(l) # res=l.remove('egon') # print(res) # None
- 循环
# l=[1,'aaa','bbb'] # for x in l: # l.pop(1) # print(x)
- 其他需要掌握的操作
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) # 了解:字符串可以比大小,按照对应的位置的字符依次pk # 字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的 # print('a'>'b') # print('abz'>'abcdefg') # 了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型 # l1=[1,'abc','zaa'] # l2=[1,'abc','zb'] # # print(l1 < l2) # 补充 # 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())
二、元组
元组本质上就是一个不可变的列表
作用:按照索引的位置存放多个值,只用于读,不能改
定义:
()内用逗号分隔开多个任意类型的元素 # t=(1,1.3,'aa') # t=tuple((1,1.3,'aa')) # print(t,type(t)) # 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]=11111 # t=(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]))
3、类型转换、
# print(tuple('hello')) # print(tuple([1,2,3])) # print(tuple({'a1':111,'a2':333}))
4、内置方法
优先掌握的操作
(1)取值
#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])
(3)长度
# t=('aa','bbb','cc','dd','eee') # print(len(t))
(4)成员运算in/ not in和循环
#4、成员运算in和not in # print('aa' in t) #5、循环 # for x in t: # print(x)
(5)元素的索引以及元素统计count
t=(2,3,111,111,111,111) # print(t.index(111)) # print(t.index(1111111111)) 元素不存在则报错 print(t.count(111))
三、字典
定义:
{}内用逗号分隔开多个key:value,其中value可以使任意类型,但是key必须是不可变类型,且是唯一的
1、创建字典
(1)方式一:
# d={'k1':111,(1,2,3):222} # d=dict(...) # print(d['k1']) # print(d[(1,2,3)]) # print(type(d))
(2)方式二:
# d=dict(x=1,y=2,z=3) # print(d,type(d)) # d={} # 默认定义出来的是空字典 # print(d,type(d))
(3)方式三:
# res=dict(info) # 一行代码搞定上述for循环的工作 # print(res)
(4)方式四:
# keys=['name','age','gender'] # # d={} # # for k in keys: # # d[k]=None # # print(d) # d={}.fromkeys(keys,None) # 一行代码搞定上述for循环的工作 # print(d)
2、数据类型转换
# info=[ # ['name','egon'], # ('age',18), # ['gender','male'] # ] # # d={} # # for k,v in info: # k,v=['name','egon'], # # d[k]=v # # print(d)
3、内置方法
优先掌握
#优先掌握的操作: #1、按key存取值:可存可取 # d={'k1':111} # 针对赋值操作:key存在,则修改 # d['k1']=222 # 针对赋值操作:key不存在,则创建新值 # d['k2']=3333 # print(d) #2、长度len # d={'k1':111,'k2':2222,'k1':3333,'k1':4444} # print(d) # print(len(d)) #3、成员运算in和not in:根据key # d={'k1':111,'k2':2222} # print('k1' in d) # print(111 in d) #4、删除 d={'k1':111,'k2':2222} # 4.1 通用删除 # del d['k1'] # print(d) # 4.2 pop删除:根据key删除元素,返回删除key对应的那个value值 # res=d.pop('k2') # print(d) # print(res) # 4.3 popitem删除:随机删除,返回元组(删除的key,删除的value) # res=d.popitem() # print(d) # print(res) #5、键keys(),值values(),键值对items() =>在python3中得到的是老母鸡 d={'k1':111,'k2':2222} ''' 在python2中 >>> d={'k1':111,'k2':2222} >>> >>> d.keys()#6、循环 ['k2', 'k1'] >>> d.values() [2222, 111] >>> d.items() [('k2', 2222), ('k1', 111)] >>> dict(d.items()) {'k2': 2222, 'k1': 111} >>> ''' #6、for循环 # for k in d.keys(): # print(k) # # for k in d: # print(k) # for v in d.values(): # print(v) # for k,v in d.items(): # print(k,v) # print(list(d.keys())) # print(list(d.values())) # print(list(d.items()))
其他一些方法
d={'k1':111} #1、d.clear() #2、d.update() # d.update({'k2':222,'k3':333,'k1':111111111111111}) # print(d) #3、d.get() :根据key取值,容错性好 # print(d['k2']) # key不存在则报错 # print(d.get('k1')) # 111 # print(d.get('k2')) # key不存在不报错,返回None #4、d.setdefault() # info={} # if 'name' in info: # ... # 等同于pass # else: # info['name']='egon' # print(info) # 4.1 如果key有则不添加,返回字典中key对应的值 info={'name':'egon'} res=info.setdefault('name','egon') # print(info) print(res) # 4.2 如果key没有则添加,返回字典中key对应的值 info={} res=info.setdefault('name','egon') # print(info) print(res)