列表、字典(操作)
列表:增删改查
增
L.append(object):在列表最后增加 _list = [5, 2, 6, 1, 3, 7, 4] _list.append("pd") print(_list) #[5, 2, 6, 1, 3, 7, 4, 'pd']
_list = ["小东", "小西", "小南", "小北"] while 1: username = input("输入Q/q退出添加") if username.strip().lower() == "q": #迭代添加姓名到列表最后,直到输入q退出 break else: _list.append(username) print(_list) #['小东', '小西', '小南', '小北', 'ppd']
L.insert(index, object):插入 _list = [5, 2, 6, 1, 3, 7, 4] _list.insert(3, "pd") print(_list) #[5, 2, 6, 'pd', 1, 3, 7, 4]
L.extend(iterable):迭代增加 _list = [5, 2, 6, 1, 3, 7, 4] _list.extend(["p", "p", 8]) print(_list) #[5, 2, 6, 1, 3, 7, 4, 'p', 'p', 8]
删
L.pop(index):按索引删除 _list = [5, 2, 6, 1, 3, 7, 4] name = _list.pop(3) #按索引删除,默认删除最后一个 print(name, _list) #1 [5, 2, 6, 3, 7, 4];1为返回值 L.remove(value):按元素删除 _list = [5, 2, 6, 1, 3, 7, 4] _list.remove(5) print(_list) #[2, 6, 1, 3, 7, 4] L.clear():清空列表 _list = [5, 2, 6, 1, 3, 7, 4] _list.clear() print(_list) #[] del:从内存中删除列表 _list = [5, 2, 6, 1, 3, 7, 4] del _list del list[]:切片删除列表内容 _list = [5, 2, 6, 1, 3, 7, 4] del _list[0:2] print(_list) #[6, 1, 3, 7, 4]
改
赋值地改:_list[i] = "n" #将"e_list"的[i]位删除,然后"n"赋值给这个位 _list = [5, 2, 6, 1, 3, 7, 4] _list[0] = "pd" print(_list) #['pd', 2, 6, 1, 3, 7, 4] 切片地改:在区间加入任意数量新元素 _list = [5, 2, 6, 1, 3, 7, 4] _list[0:1] = "小明" #['小', '明', 2, 6, 1, 3, 7, 4] _list[0:3] = [1,"a", "小明"] #[1, 'a', '小明', 1, 3, 7, 4] print(_list)
查
_list = [5, 2, 6, 1, 3, 7, 4] for i in _list: #for循环一一查看列表里的内容 print(i) _list = [5, 2, 6, 1, 3, 7, 4] print(_list[0:2]) #[5, 2];切片查看
公共方法
L.index(value, [start], [stop]):列表只能用index索引,不能用find _list = [5, 2, 6, 1, 3, 7, 4] i = _list.index(1) #3 找到元素1的索引号为3 i = _list.index(3, 2, 5) #4 找到元素3的索引号为4 L.sort(reverse=False):列表排序 _list = [5, 2, 6, 1, 3, 7, 4] _list.sort() #默认正序排序参数可以不用填(reverse=False),倒序排序添加"reverse=True" print(_list) #[1, 2, 3, 4, 5, 6, 7] L.reverse():列表反向排序 _list = [5, 2, 6, 1, 3, 7, 4] _list.reverse() print(_list) #[4, 7, 3, 1, 6, 2, 5]
列表的嵌套
_list = ["小白", "老虎", "ppd", ["东南", "西北"], 18] print(_list[1][1]) #虎 name = _list[2].capitalize() #Ppd _list[3][1] = "ppd" #['小白', '老虎', 'ppd', ['东南', 'ppd'], 18] _list = ['小白', '老虎', 'ppd', ['东南', 'ppd'], 18] _list[3][1] = _list[3][1].upper() #['小白', '老虎', 'ppd', ['东南', 'PPD'], 18] _list[1] = _list[1].replace("虎", "板") #['小白', '老板', 'ppd', ['东南', '西北'], 18] _list[3][0] = _list[3][0].replace("东", "西") #['小白', '老虎', 'ppd', ['西南', '西北'], 18] _list[3].append("东南西北") #['小白', '老虎', 'ppd', ['东南', '西北', '东南西北'], 18]
元组:只读列表,可循环查询,可切片;儿子不能改,孙子可能可以改
_tuple = (1, 2, 3, "ppd", ["小明", 4, 5, "qwer"], "哈哈") _tuple[4][3] = _tuple[4][3].upper() #(1, 2, 3, 'ppd', ['小明', 4, 5, 'QWER'], '哈哈') _tuple[4].append("asdf") #(1, 2, 3, 'ppd', ['小明', 4, 5, 'QWER', 'asdf'], '哈哈')
列表与字符串之间的转换(重要)
s = ["小白", "ppd", "18"] x = ",".join(s) print(x) #小白,ppd,18 s = "小白:ppd:18" #这是一个字符串 x = s.split(":") #用 : 区别分开字符串 print(x) #['小白', 'ppd', '18']
range:顾头不顾尾
for i in range(1, 10): print(i) #123456789 for i in range(1, 10, 2): print(i) #13579 for i in range(10, 1, -2): print(i) #10 8 6 4 2 for i in range(1, 10, -1): print(i) #什么也不显示
字典
数据类型划分:可变数据类型、不可变数据类型
不可变数据类型:元组、bool、int、str 可哈希
可变数据类型:list、dict、set 不可哈希
key:必须是不可变数据类型 可哈希
value:任意数据类型
优点:二分查找去查询
特点:无序、存储大量的关系型数据
访问字典中的值:字典名["键"]
增改删查
dic = {"age": 18, "name": "pd", "sex": "male"}
增或改:字典名["键"]、字典名.update(字典名1) dic["age"] = "20" #有键,值被覆盖 dic["hobby"] = "swimming" #没有找到对应的键,则作为新的键值对添加进字典中 dic1 = {"weight": "55kg", "height": 173} dic.update(dic1) #将字典dic1的键值对全部添加到字典dic中
删: del 字典名["键"]、字典名.pop("键")、字典名.popitem()、字典名.clear() del dic["age"] #删除键"age",无返回值 del dic[] #删除字典,什么都没了 dic.pop("age") #删除键"age",有返回值,设置一个被赋予的变量,print这个变量即可看到返回值 dic.popitem() #随机删除,有返回值 dic.clear() #清空字典中的键值对
查: x = dic.keys() y = dic.values() z = dic.items() print(x) #dict_keys(['age', 'name', 'sex']) print(y) #dict_values([18, 'pd', 'male']) print(z) #dict_items([('age', 18), ('name', 'pd'), ('sex', 'male')])
遍历
dic = {"age": 18, "name": "pd", "sex": "male"} for k in dic.keys(): print(k.title()) for v in dic.values(): print(v) for k, v in dic.items(): #k、v是变量,可使用任何名称 print("key:"+k, "\nvalues:"+str(v)) #\n为换行符 if "height" not in dic.keys(): #使用keys()检测一个键是否在字典中 print("tell me your height")
嵌套
dic = {"name": ["大头", "小头"], "name8": ["ppd", "peter", "john"], "dic1": {"color": "red", "points": "5", "position": "gd"}, (1, 2, 3): "123", True: 1, 18: "age", } dic["name"].append("大小头") #修改键name的值,name的值为列表,即在列表中加入新的元素 dic["dic1"]["color"] = dic["dic1"]["color"].upper() #将键color的值全改为大写 dic["name8"][1] = dic["name8"][1].capitalize() #修改键name8的值,值为列表,将peter首字母改为大写 dic["dic1"]["abc"] = "123" #修改键dic1对应的值,值为字典,在字典中添加键值对 "abc": "123"