列表相关的函数

1.增

  1. append 向列表的末尾添加新元素

    lst = ["刘德华"]
    lst.append("周星驰")
    print(lst)
    
  2. insert 在指定索引之前插入元素

    lst = ["刘德华","周星驰"]
    lst.insert(0,"吴孟达")
    lst.insert(2,"朱茵")
    print(lst)
    
  3. extend 迭代追加所有元素

    """要求: 数据的类型是可迭代性数据"""
    strvar = "1234"
    lst.extend(strvar)
    print(lst)
    

2.删

  1. pop 通过指定索引删除元素,若没有索引移除最后那个

    lst = ["晏国彰","毛洪磊","刘子涛","刘聪","牧树人"]
    # 指定索引进行删除
    res = lst.pop(1)
    # 默认没有任何参数,删除的最后一个
    res = lst.pop()
    print(res)
    print(lst)
    
  2. remove 通过给予的值来删除,如果多个相同元素,默认删除第一个

    lst = ["晏国彰","毛洪磊","刘子涛","刘聪","牧树人","刘子涛","刘子涛"]
    # 指定值进行删除,如果有多个相同的重复值,默认删掉第一个
    lst.remove("刘子涛")
    print(lst)
    
  3. clear 清空列表

    lst = ["晏国彰","毛洪磊","刘子涛","刘聪","牧树人","刘子涛","刘子涛"]
    lst.clear()
    print(lst)
    

3. 改差 => 参考: 列表的相关操作

4. 其他函数

  1. index 获取某个值在列表中的索引

    """列表.index(值,start,end)   [] 表达参数可选项 找不到报错"""
    lst = ["晏国彰","毛洪磊","刘子涛","刘聪","牧树人","刘子涛","刘子涛"]
    res = lst.index("刘子涛")
    res = lst.index("刘子涛",3)
    """res = lst.index("刘子涛",3,5) => error"""
    print(res)
    
  2. count 计算某个元素出现的次数

    lst = ["晏国彰","毛洪磊","刘子涛","刘聪","牧树人","刘子涛","刘子涛"]
    res = lst.count("刘子涛")
    print(res)"""
    区别: 字符串里面的count可以划定范围,列表里面的count不行
    strvar = "asjksaaaf"
    print(strvar.count("a",1))
    """
    
  3. sort 列表排序 (默认从小到大排序)

    lst = [99,44,66,1,10,3,-57,-88]
    lst.sort()
    print(lst)# 从大到小排序
    lst.sort(reverse=True)
    print(lst)# 排序英文 (ASCII 编码)
    """一位一位进行比较,在第一位相同的情况下,比较第二位,以此类推"""
    lst = ["tom","jack","lucy","bob"]
    lst.sort()
    print(lst)# 可以对中文进行排序(无规律可循)
    lst = ["王文","刘德华","周星驰","周润发"]
    lst.sort()
    print(lst)
    
  4. reverse 列表反转操作

    lst = ["王文","刘德华","周星驰","周润发"]
    lst.reverse()
    print(lst)
    

5. 浅拷贝 和 深拷贝

a = 15
b = a
a = 16
print(b)lst1 = [1,2,3]
lst2 = lst1
lst1.append(4)
print(lst2)
  1. 浅拷贝

    import copy
    lst1 = [1,2,3]# 方法一 copy.copy() 模块.方法
    lst2 = copy.copy(lst1)
    lst1.append(4)
    print(lst1)
    print(lst2)# 方法二 列表.copy()
    lst1 = [1,2,3,4]
    lst2 = lst1.copy()
    lst1.insert(0,0)
    print(lst1)
    print(lst2)
    
  2. 深拷贝

    """
    lst1 = [1,2,3,[4,5,6]]
    lst2 = copy.copy(lst1)
    lst1[-1].append(7)
    lst1.append(100)
    print(lst1)
    print(lst2)
    """lst1 = [1,2,3,[4,5,6]]
    lst2 = copy.deepcopy(lst1)
    lst1[-1].extend("abc")
    print(lst1)
    print(lst2)print(id(lst2[-1]))
    print(id(lst1[-1]))print(id(lst1[0]))
    print(id(lst2[0]))lst2[0] = 1111
    print(id(lst1[0]))
    print(id(lst2[0]))
    
  3. 总结

    浅拷贝只拷贝一级容器中的所有数据

    深拷贝拷贝所有层级的所有元素

    浅拷贝速度比深拷贝速度快

    深拷贝在执行是: 如果是不可变数据,地址会暂时的指向原来数据

    ​ 如果是可变数据,直接开辟新空间

    不可变数据: Number str tuple

    可变数据 : list set dict

字典相关的函数

1. 增

dic = {}
dic["ww"] = "英俊潇洒,一表人才,文武双全"
dic["xm"] = "干游戏,吃泡面,不洗澡"
dic["hh"] = "可爱,漂亮,大方,温柔"
print(dic)"""fromkeys() 使用一组键和默认值创建字典"""lst = ["ww","xm","hh"]
dic = {}.fromkeys(lst,None)
print(dic)"""
注意点: 三个键所指向的列表是同一个(不推荐)dic = {}.fromkeys(lst,[])
print(dic)
dic["ww"].append(1)
print(dic)dic["ww"] = [1]
dic["xm"] = [1]
dic["hh"] = [1]
"""

2. 删

  1. pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)

    dic = {"top":"花木兰" , "middle":"甄姬" , "bottom":"孙尚香" ,  "jungle" : "钟馗" , "support":"蔡文姬" }
    res = dic.pop("top")# 如果删除的是不存在的键,直接报错
    # res = dic.pop("top123")# 可以设置默认值,预防报错
    res = dic.pop("top123","没有这个键")
    res = dic.pop("middle","没有这个键")
    print(res,dic)
    
  2. popitem() 删除最后一个键值对

    dic = {"top":"花木兰" , "middle":"甄姬" , "bottom":"孙尚香" ,  "jungle" : "钟馗" , "support":"蔡文姬" }
    res = dic.popitem()
    print(res,dic)
    
  3. clear() 清空字典

    dic = {"top":"花木兰" , "middle":"甄姬" , "bottom":"孙尚香" ,  "jungle" : "钟馗" , "support":"蔡文姬" }
    dic.clear()
    print(dic)
    

3. 改

  1. update() 批量更新(有该键就更新,没有就添加)

    dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}
    dic_new = {"ywz":"暖男","hxl":"扣手","ly":"小美女,单纯,可爱,活泼,灵巧...."}# 方法一(推荐)
    dic.update(dic_new)
    print(dic)# 方法二
    dic.update(kxq="聪明,活泼,可爱,灵巧,惹人喜欢",ccg="乐观,大方,可爱,灵巧")
    print(dic)
    

4. 查

  1. get() 通过键获取值 (若没有该键可设置默认值,预防报错)

    dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}
    res = dic.get("ww")
    res = dic.get("asvdf") # None
    res = dic.get("asvdf","没有这个键")
    # res = dic["abcdef"] error
    print(res)
    

5. 重点掌握

  1. keys() 将字典的键组成新的可迭代对象

    dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}
    res = dic.keys()
    print(res)
    
  2. values() 将字典中的值组成新的可迭代对象

    dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}
    res = dic.values()
    print(res)
    
  3. items() 将字典的键值对凑成一个个元组,组成新的可迭代对象

    dic = {'ww': '一表人才,除了帅气的皮囊之外,一无所有', 'ywz': '渣男', 'hxl': '抠脚老汉'}
    res = dic.items()
    print(res)
    

集合

1. 集合的相关操作

set1 = {"jacklove","theshy","rookie","xboyww"}
set2 = {"倪萍","张国荣","赵本山","刘能","赵四","xboyww"}# intersection() 交集
res = set1.intersection(set2)
print(res)
# 简写 &
res = set1 & set2
print(res)# difference() 差集
res = set1.difference(set2)
print(res)
# 简写 -
res = set1 - set2
print(res)# union() 并集
res = set1.union(set2)
print(res)
# 简写 |
res = set1 | set2
print(res)# symmetric_difference() 对称差集 (补集情况涵盖在其中)
res = set1.symmetric_difference(set2)
print(res)
# 简写 ^
res = set1 ^ set2
print(res)set1 = {"周星驰","刘德华","成龙","张学友"}
set2 = {"周星驰","刘德华"}# issubset() 判断是否是子集
res = set1.issubset(set2)
print(res)
# 简写 <
res = set1 < set2
print(res)# issuperset() 判断是否是父集
res = set1.issuperset(set2)
print(res)
# 简写 >
res = set1 > set2
print(res)# isdisjoint() 检测两集合是否不相交 不相交 True 相交 False
res = set1.isdisjoint(set2)
print(res)

2. 集合相关的函数

1. 增

  1. add() 向集合中添加数据 (一次加一个)

    setvar = {"神秘男孩","金角大王"}
    setvar.add("银角大王")
    print(setvar)
    
  2. update() 向集合中迭代增加数据 (一次加一堆)

    setvar = {"神秘男孩","金角大王"}
    strvar = ("小明","小红")
    setvar.update(strvar)
    print(setvar)
    

2. 删

  1. clear() 清空集合

    setvar = {"神秘男孩","金角大王","银角大王"}
    setvar.clear()
    print(setvar)
    
  2. pop() 随机删除集合中的一个数据

    setvar = {"神秘男孩","金角大王","银角大王"}
    res = setvar.pop()
    print(res)
    
  3. remove() 删除集合中指定的值 (不存在则报错) => 了解即可

    setvar = {"神秘男孩","金角大王","银角大王"}
    setvar.remove("神秘男孩")
    print(setvar)
    
  4. discard() 删除集合中指定的值 (不存在的不删除) => 推荐使用

    setvar = {"神秘男孩","金角大王","银角大王"}
    setvar.discard("神秘男孩")
    setvar.discard("神秘男孩666")
    print(setvar)
    

3. 冰冻集合

  1. frozenset 可强转容器类型数据变为冰冻集合

  2. 冰冻集合一旦创建,不能进行任何修改,只能做交叉并补操作

    lst1 = ["王闻",18,"男性","爱好:跑步"]
    fz1 = frozenset(lst1)lst2 = ("王闻","地址:包头","买一辆特斯拉9.9包邮")
    fz2 = frozenset(lst2)print(fz1,type(fz1))
    print(fz2,type(fz2))# 不能够在冰冻集合当中添加或者删除元素
    # fz1.add(123) error
    # 只能交叉并补print( fz1 & fz2 )
    print( fz1 - fz2 )
    

练习

练习1

li = ["alex", "WuSir", "xboy", "oldboy"]
  1. 列表中追加元素"seven",并输出添加后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    li.append("seven")
    print(li)
    
  2. 请在列表的第1个位置插入元素"Tony",并输出添加后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    li.insert(0,"Tony")
    print(li)
    
  3. 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    li[1] = "Kelly"
    print(li)
    
  4. 请将列表l2=[1,“a”,3,4,“heart”]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

    li = ["alex", "WuSir", "xboy", "oldboy"]
    l2=[1,"a",3,4,"heart"]
    li.extend(l2)
    print(li)print(li + l2)
    
  5. 请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

    li = ["alex", "WuSir", "xboy", "oldboy"]
    s = "qwert"
    li.extend(s)
    print(li)
    
  6. 请删除列表中的元素"alex",并输出删除后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    li.remove["alex"]
    print(li)
    
  7. 请删除列表请删除列表中的第2至4个元素,并输出删除元素后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    del li[1:]
    del li[1:4]
    print(li)
    
  8. 删除列表中的第2个元素,并输出删除的元素和删除元素后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    res = li.pop(1)
    print(res)
    print(li)
    
  9. 请将列表所有得元素反转,并输出反转后的列表

    li = ["alex", "WuSir", "xboy", "oldboy"]
    li.reverse()
    print(li)
    
  10. 请计算出"alex"元素在列表li中出现的次数,并输出该次数。

li = ["alex", "WuSir", "xboy", "oldboy"]
res = li.count("alex")
print(res)

练习2

写代码,有如下列表,利用切片实现每一个功能

li = [1, 3, 2, “a”, 4, “b”, 5,“c”]

  1. 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(list(li[:3]))
    
  2. 通过对li列表的切片形成新的列表l2,l2 = [“a”,4,“b”]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(list(li[3:6]))
    
  3. 通过对li列表的切片形成新的列表l3,l3 = [1,2,4,5]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(list(li[::2]))
    
  4. 通过对li列表的切片形成新的列表l4,l4 = [3,“a”,“b”]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(li[1:6:2])
    print(list(li[1:-2:2]))
    
  5. 通过对li列表的切片形成新的列表l5,l5 = [“c”]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(list(li[-1]))
    
  6. 通过对li列表的切片形成新的列表l6,l6 = [“b”,“a”,3]

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    print(list(li[-3:0:-2]))
    

练习3

写代码,有如下列表,按照要求实现每一个功能。

lis = [2, 7, “k”, [“qwe”, 20, [“k1”, [“tt”, 3, “1”]], 89], “ab”, “adv”]

  1. 将列表lis中的"tt"变成大写

    lis = [2, 7, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    print(lis[3][2][1][0].upper())
    
  2. 将列表中的数字3变成字符串"100"

    lis = [2, 7, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][1] = "100"
    print(lis)
    
  3. 将列表中的字符串"1"变成数字101

    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][-1] = 101
    print(lis)
    

练习4

li = [“alex”, “eric”, “rain”]

利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"

li = ["alex", "eric", "rain"]
res = "_".join(li)
print(res)

练习5

利用for循环打印出下面列表的索引

li = ["alex", "WuSir", "xboy", "oldboy"]
for i in li:print(li.index(i))

练习6

利用for循环和range 找出50以内能被3整除的数,并将这些数插入到一个新列表中。

lst = []
for i in range(51):if i % 3 == 0:lst.append(i)
print(lst)

练习7

利用for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来

lst = []
for i in range(100,9,-2):if i % 4 == 0:lst.append(i)
print(lst)

练习8

查找列表li中的元素,移除每个元素的空格,并找出以"A"或者"a"开头,并以"c"结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

li = ["xboy ", "alexC", "AbC ", " egon  ", " riTiAn  ", "WuSir", "  aqc"]
lst_new = []
for i in li:res = i.strip()if (res.startswith("A") or res.startswith("a")) and res.endswith("c"):lst_new.append(res)
print(lst_new)

练习9

敏感词列表 li = [“苍老师”, “东京热”, “武藤兰”, “波多野结衣”]

将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换***),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到新列表中。

li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
lst = []
while True:strvar = input("请输入名字")# 如果按 q 直接退出if strvar.upper() == "Q":print(lst)break# 循环遍历替换敏感词for i in li:if i in strvar:strvar = strvar.replace(i,"*" * len(i))# 把所有过滤好的数据存放新的列表lst.append(strvar)

练习10

li = [1, 3, 4, “alex”, [3, 7, “23aa”,8, “xboy”], 5,(‘a’,‘b’)]

循环打印列表中的每个元素,并转化为小写,遇到列表则再循环打印出它里面的元素。

li = [1, 3, 4, "alex", [3, 7, "23aa",8, "xboy"], 5,('a','b')]
for i in li:# 判断类型是不是字符串if isinstance(i,str):print(i.lower())# 判断类型是列表或者元组elif isinstance(i,(list,tuple)):for j in i:# 判断是不是字符串类型if isinstance(j,str):print(j.lower())else:# 否则原型化打印print(j)else:print(i)

练习11

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
  1. 讲述元组的特性

    可获取,不可修改,有序

  2. 请问tu变量中的第一个元素 “alex” 是否可被修改?

    不可以

  3. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "seven"

    列表 可以修改

    tu[-1][2]["k2"].append("seven")
    
  4. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"

    元组 不可修改

练习12

把字符串 “k:1|k1:2|k2:3|k3:4” 处理成字典 {‘k’:1,‘k1’:2…}

strvar = "k:1|k1:2|k2:3|k3:4"
dic = {}
lst = strvar.split("|")
print(lst) # ['k:1','k1:2','k2:3','k3:4']
for i in lst:k,v = i.split(":")dic[k] = v
print(dic) # {'k':'1','k1':'2','k2':'3','k3':'4'}

练习13

有如下值li= [11,22,33,44,55,66,77,88,99,90],

将大于 66 的值保存至字典的k1键中,

将小于 66 的值保存至字典的k2键中。

即: {‘k1’: 大于66的所有值列表, ‘k2’: 小于66的所有值列表}

li= [11,22,33,44,55,66,77,88,99,90]
dic = {"k1":[],"k2":[]}
for i in li:if i > 66:dic["k1"].append(i)elif i < 66:   dic["k2"].append(i)
print(dic)

python-列表_字典_集合的相关函数_深拷贝和浅拷贝相关推荐

  1. 微课|Python列表、字典、集合、字符串对象常用方法串讲

    推荐教材: <Python网络程序设计(微课版)>,ISBN:978-7-3025-8312-7,董付国,清华大学出版社,2021年8月出版 配套资源: 教学大纲.450页PPT.91个例 ...

  2. python列表,字典,集合

    初识模块 import sysprint(sys.path)#查看化境变量print(sys.argv)#查看文件的相对路径,但是在pachrm中 会自动转为绝对路径 View Code import ...

  3. python.集合转列表_Python基础数据类型:元组、列表、字典、集合

    你好,我是goldsunC. 让我们一起进步吧! 元组.列表.字典.集合 元组和列表是Python语言中非常重要的一部分内容,它们是Python中除了字符串以外的另两种序列结构,几乎在任何地方都少不了 ...

  4. 【Python基础】使用列表、字典和集合生成式来缩短代码

    作者 | Philip Wilkinson 编译 | VK 来源 | Towards Datas Science 在使用Python将近一年的时间里,我经常遇到"生成式"这个词,但 ...

  5. python 列表、元组、集合、字典、循环遍历数据结构

    python 列表.元组.集合.字典.数据结构的循环(整理自python文档) 列表-list-用方括号标注,逗号分隔的一组值 list 的 方法 对list添加.插入.删除.查找.排列.翻转 lis ...

  6. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)

    Python学习笔记:列表.字典与集合解析(List, Dict and Set Comprehensions) 1.列表解析 最受喜爱的Python语言特性.过滤一个集合的元素生成一个新的列表. 一 ...

  7. Python序列 数据类型 创建方式 Tuple元组 Str字符串 List列表 dict字典 Set集合 range,zip,map,enumerate

    Python 序列分类 数据类型 详细介绍 Python 主要数据类型: 元组Tuple, 字符串Str,列表List,字典Dict,集合Set 对比 元组Tuple 字符串Str 列表List 字典 ...

  8. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  9. Day2 - Python基础2 列表、字典、集合 --转自金角大王

    Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0)  编辑 收藏 本节内容 列表.元组 ...

  10. python列表、字典、元组的用法及区别_python列表,字典,元组简单用法示例

    本文实例讲述了python列表,字典,元组简单用法.分享给大家供大家参考,具体如下: 列表 #_*_ coding:utf-8 _*_ # 列表,定义在方括号的形式中,可以进行切片操作. #它没有固定 ...

最新文章

  1. python 面向对象:类,作用域
  2. c 递归下降识别程序_看动画轻松理解递归与动态规划
  3. mysql source导入慢,MySQL mysqldump与source导入慢怎么解决
  4. Go 语言设计与实现纸质书出版,为信仰补票
  5. 【第五周课后作业】“番茄工作法”软件创新性分析
  6. ubuntu 16.04 安装最新的 docker
  7. Android瀑布流照片墙实现,体验不规则排列的美感
  8. 自学python到什么程度可以找工作-Python学到什么程度就可以找工作?
  9. 金刚爸爸是这么教育金刚儿子的
  10. Hive内部表和外部表的区别详解
  11. 易语言 使用精易皮肤模块的 方法
  12. 什么是PLC软元件和软继电器
  13. excel取消隐藏_Excel教程:一键取消隐藏工作表
  14. 收官之战,年终的财务分析如何做?
  15. linux screen 环境变量,Linux 下 screen 使用方法
  16. ASCII Grid
  17. Linux系统学习了解计算机
  18. WIN10笔记本屏幕亮度无法调节,一直是最高亮度
  19. 联想服务器安全配置文件,适用于台式机的 Lenovo Service Engine(LSE)BIOS安全公告...
  20. 淮北市第四届机器人比赛_淮北市第三实验小学组织学生参加2020年淮北市中小学生机器人竞赛“果力WYAI人工智能挑战赛”...

热门文章

  1. 读研时期的爱情(二)
  2. 智过网:咨询工程师考试通过率高吗?
  3. 2020-12-14超强 H5直播/点播播放器LivePlayer
  4. $(origin variable)详解
  5. Django中引入echarts图表做数据可视化
  6. Java数据结构之堆
  7. 使用Camtasia制作动态动画场景
  8. keras lstm参数 中_keras LSTM中参数问题:timesteps和units
  9. Stable Diffusion XL:更快,更强
  10. 设置Activity使用系统壁纸作为背景