列表list增删改查排序、元组tuple、字典dict增删改查和len()、keys、values、items、setdefault、enumerate()
1、列表list
格式: 列表名 = [元素1, 元素2, ...]
列表可以保存任意的数据类型
支持下标索引: 有序的数据类型
定义一个特殊的列表-> 空列表
my_list = []
my_list = list()
查看类型 type(my_list)
计算元素个数 len(my_list)
2、列表的相关操作"增"、"删"、"改"、"查"
<1>添加元素("增"append, extend, insert)
list.append(object)向列表添加元素 (添加在列表最后面)
list.extend(iterable)将另一个集合中的元素逐一添加到列表中
(把iterabla可迭代对象进行最小单元拆分, 依次的保存到列表中)
list.insert(index, object) 在指定位置index前插入元素object,插入后的下标是index(向指定位置插入数据)
<2>修改元素("改")
格式: 列表名[下标索引] = 数值
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
<3>查找元素("查"in, not in, index, count)
python中查找的常用方法为:
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
列表名.index(object,start,end)在(默认整个列表,可以指定索引)列表中查找如果在返回索引值,如果不在会报一个异常.
列表名.count(object)返回 对象在列表中出现的次数 非0则存在,0则不存在
Python中非零即真 零则假
if my_list.count(234):
# 获取下标
index = my_list.index(234)
print(index)
else:
print("不存在")
if 1:
print("真")
<4>删除元素("删"del, pop, remove)
列表元素的常用删除方法有:
del:根据下标进行删除
格式: del 列表名[下标索引]或者del(列表名[下标索引])
pop:删除最后一个元素
格式: pop(下标索引) 删除指定的元素
格式: pop() 默认删除最后一个,,并且返回所删除的数据
remove:根据元素的值进行删除
格式: 列表名.remove(元素值)
<5>排序(sort, reverse)改变列表本身
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
列表.sort()或者 列表.sort(reverse=False) (升序) 从小到大
列表.sort(reverse=True)(降序) 从大到小
reverse方法是将list逆置
列表.reverse()
<6>排序sorted(iterable,key,reverse)和reversed(object):重新定义一个列表接收,原列表不变
newList=sorted(列表)或者 newList=sorted(列表,reverse=False) (升序) 从小到大
newList=sorted(列表,reverse=True) (降序) 从大到小
ret = reversed(object)
newList= type(ret)
3、元组tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
元组和列表的不同点:
列表是可变的的数据类型(增删改查)
元组是不可变的数据类型(查)
元组和列表的相同点:
保存数据, 有序的数据类型
定义一个特殊的元组 -> 空元组 my_tuple = ()
定义一个特殊的元组 -> 有且只有一个元素 my_tuple = (3.14,)
查找元素("查"in, not in, index, count)
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
index和count与字符串和列表中的用法相同
tuple.index(x,start,end)在某个下标区间(左闭右开)内通过元素查找(默认在整个元组中查找),返回元素的下标,没找到就报错
tuple.count(x) 在整个元组中通过元素查找返回 对象在元组中出现的次数,非0则存在,0则不存在
4、字典dict
格式: 字典名 = {"name": "小明"}
"name" -> 键 key,"小明" -> 值 value,"name": "小明" -> 键值对
(key value) -> 元素
定义一个特殊的字典 -> 空字典 my_dict = {} 或 my_dict = dict()
字典的key可以是任意数据类型但是一般都是使用字符串类型(但是不能出现任何可变的数据类型)
key是字典中的唯一标识 (如果key重复了 python只会保留一份)
字典是无序的数据类型,如果一个数据类型支持下标索引就是有序的数据类型
<1>查看元素
值 = 字典名[key] 通过key 获取value。 若访问不存在的键,则会报错。
get
dict.get(key, 默认值)
在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,如果key存在于dict中 会获取对应的value值。如果key不存在与dict中 会返回默认值 字典不会发生任何改变
info.get('age')
print(info.get('age')) 不存在时输出None
还可以设置默认值:
age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
setdefault
dict.setdefault(key, 默认值)
如果key存在于dict中 会获取对应的value值
如果key不存在与dict中 会返回默认值 而且会把这个key和默认值组成新的键值对添加到字典中
通过key获取value值的方式有几种?
01: value = dict[key]
02: value = dict.setdefault(key)
03: value = dict.get(key)
<2>修改元素(key存在) 字典名[key] = value
字典名[key] 等号重新赋值
<3>添加元素(key不存在) 字典名[key] = value
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
<4>删除元素del和clear()
del删除指定的元素del有两种用法,一种是del加空格,另一种是del()
del 字典名[key] 或del(字典名[key] )
del 字典名 删除整个字典
字典名.clear() 清空整个字典
<1>len()
len(dict)测量字典中,键值对的个数
<2>keys
dict.keys返回一个包含字典所有KEY的列表
<3>values
dict.values返回一个包含字典所有value的列表
<4>items
dict.items返回一个包含所有(键,值)元祖的列表
<5>has_key (Python3 已取消)
dict.has_key(key)如果key在字典中,返回True,否则返回False
可以使用in代替
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
字符串、列表、元组、字典的区别:
可迭代对象:str、list、tuple
可以使用len函数计算元素格式:str、list、tuple、dict
可变数据类型:list、dict
不可变数据类型:str、tuple
有序的数据类型:str、list、tuple
无序的数据类型:dict
enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
不仅仅打印出对应的元素值 而且打印元素值对应的下标索引
for i, value in enumerate(list):
print(i, value)
Python中的数组包括list、tuple、dict以及set:
list:占用内存小,但是查找速度慢;
dict:(1)dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,找速度都一样;(2)dict的缺点是占用内存大,还会浪费很多内存(3)由于dict是按 key 查找,所以,在一个dict中,key不能重复;key必须是不可变类型(4)dict的第二个特点就是存储的key-value序对是没有顺序的!