import random # 容器类型 --python基本数据类型,是python中内置的数据结构 # list tuple dict set ###### 列表 --list # 1、有序项目集合 # 2、可变数据类型 # 3、存放任何数据类型(双向链表+数据) # 列表的定义:(list是一个内建函数) # lst = [] # type(lst) # <class 'list'> # lst2 = list() # type(lst2) # <class 'list'> # list -- 它可以吧其他数据剋行转换成list 参数--传递可迭代对象(能被for循环遍历的都是可迭代对象) # lst3 = list("abc") #工厂函数 -- 一般是类型转换函数 # lst3 # ['a', 'b', 'c'] # 有序项目集合 # list = [1,2,3] # lst1 = lisst("abc") #不要用内建函数作为变量名 # lst1 = ["a","bbb","ccc","d"] # print( lst1[2]) # print( lst1[-1:1:-1]) # print(lst1[::-1]) # 可变数据类型 # 在原内存地址上,可以修改的,就是可变数据类型 # str1 = "abc" # lst1 = ["a","b","c"] # print(str1[1], id(str1)) # print(lst1[1], id(lst1)) # str1[1] = "x" #不可变数据类型 # str1 = "axc" #只能换个地址重新赋值 # print(id(str1)) # lst1[1] = "x" #可变数据类型 # print(lst1, id(lst1)) # 可以存放任何数据类型 # lst1 = ["a", 3.4, 4, [1,2],print] # print(lst1) ########列表的使用 # 列表的属性方法 # name_list = ["zhangzheng", "tangruixi", "xuluo", "zhangyapiing"] # print( dir(name_list) ) # 属性使用: 变量名.属性名 方法:变量名.方法名() ######新增 # -- append 在末尾添加一个元素 # name_list.append("liuxiaoxiao") # print(name_list) # -- insert 可以在指定的位置插入 # name_list.insert(1,"gongnian") # print(name_list) # -- extend 传递的元素是可迭代对象 可以用于两个列表的合并 # name_list.extend("abc") # print(name_list) # 运算 # lst1 = [1,2] # lst2 = [3,4] # result = lst1 + lst2 # print( result ) # print(lst1 *3) # 删除 # lst = ["A", "B","C", "x", "y", "z", "x", "z"] # -- pop 按索引删除,默认删除最后一个,并且返回删除的元素 # result = lst.pop() # print( result, lst) # result2 = lst.pop(2) # print(result2,lst) # -- remove 按元素删除,有重复的元素,默认删除第一个。如果没有这个元素就抛出异常 # lst.remove("x") # lst.remove("m") # print(lst) # del lst[0:4:2] #使用关键字删除,只要能截取到的都能删 # print(lst) # lst.clear() #清空列表 # print(lst) #修改 # lst = ["a", 1, 5, "b", "x", "y", "z"] # lst[3] = "bbbbbb" # print(lst) # lst[2:5] = "qwe" #切片修改,赋值对象是一个可迭代对象 # print(lst) # 统计类 # lst = ["ab", "a", "b", "ab", "a"] # print( lst.count("a"),lst.count("ab")) # print(lst.index("a")) #第一次出现的下标 # print( len(lst) ) # 复制 -- copy # a = 300 # b = a #python -- 引用赋值,引用传递 # print(id(a), id(b)) # b = 400 #不可变数据类型,不能修改,只能重新赋值 # # lst = [1,2,3] # lst2 = lst # lst2.append(4) # print(lst) # 完全复制一份全新的 # lst3 = lst.copy() # lst4 = lst[:] # lst3.append(5) # lst4.append(6) # print(lst3,lst4,lst) # 拷贝 =》深拷贝、浅拷贝、赋值 # 赋值 =》 li2 = li1 =>指向同一个内存地址(同一个对象) # 浅拷贝 => li3 = li1.copy() => 指向不同的内存地址(只拷贝了最外层温暖的数据) # 深拷贝 => li4 = copy.deepcopy(li3) 把所有的数据全部都复制一份,开辟新空间存储下来 # 反转和排序 # lst = ["a", "c", "A", "x", "Y"] # lst.reverse() #在原列表的基础上进行反转,负切片不会改变原列表 # print(lst) # lst.sort(reverse=True) #降序 按ASCII码排序 # print(lst) #在原列表基础上排序 # 成员关系判断,遍历 # lst = ["a", "c", "A", "x", "Y"] # print("A" in lst) # print("A" not in lst) # # for i in lst: # print(i) # for k, v in enumerate(lst): # print(k,v) # 定义班级名单,使用列表保存,每次运行的时候随机抽取列表中的人员回答问题 # 可以无限次抽取,直到按q退出,或者列表中的人员全部抽取完成退出 # 按任意键开始抽,抽到过就不用再抽 # name_list = ["youshujuan", "quanyan", "zhouyuqing", "xiajingwei", "yangyuchan"] # for i in range(len(name_list)): # num = random.randint(1,len(name_list)) # a = input("请按任意键继续或按q退出") # if a == "q": # break # print(f"抽取到:{name_list[num-1]}") # name_list.pop(num-1) # 老师的方法 # name_list = ["youshujuan", "quanyan", "zhouyuqing", "xiajingwei", "yangyuchan"] # while len(name_list): # tmp = input("按任意键进行抽取,按q退出") # if tmp == "q": # break # result = random.choice(name_list) # print(f"抽取到:{result}") # name_list.remove(result) # lst = [1,4,3,3,2,6,8,3] # 从键盘输入一个数 10 --》4,6 -->1,5(下标) # lst = [1,1,3,3,2,6,8,3] # sum = int(input("please input a number:")) # flag = 0 # for k,v in enumerate(lst): # for i in lst[k+1:]: # if v + i == sum: # flag = 1 # print(k,lst.index(i)) # break; # if flag == 1: # break; # if flag != 1: # print("无") # 其他同学的 # lst = [6, 8, 7, 1, 2, 3, 4] # num = int(input("please input num:")) # flag = 0 # for i in lst: # num1 = num - i # lst1 = lst.copy() # lst1.remove(i) # if num1 in lst1: # print(lst.index(i), lst.index(num1)) # flag += 1 # break # if flag == 0: # print("无") #老师的方法 # lst = [1,4,3,3,2,6,8,3] # num = int(input("please input a number")) # for k,v in enumerate(lst): # tmp = num - v # if tmp in lst[k+1:]: # print(k,lst[k+1:].index(tmp) + k + 1) # 一条船30个人,最多载18人。 # 把30个人进行编号,数到第7个人就下船,最后输出哪些人下船了 # 其他同学的(1) # lst = [] # for i in range(30): # lst.append(i+1) # while len(lst) > 18: # for i in range(6): # lst.append(lst.pop(0)) # print(lst.pop(0)) # 其他同学的(2) # lst = [] # lst_pre = [] # lst_down = [] # for i in range(30): # lst.append(i + 1) # while len(lst) > 18: # lst_pre = lst[0:7] # lst_down.append(lst_pre[6]) # lst = lst[7:] + lst_pre[0:6] # print(lst_down) # list转为字符串 用",".join(lst) list里面存放的必须是字符串才能拼接 ”“里面可以规定拼接时用什么分隔 # lst = ["1","2","3"] # print(",".join(lst)) # nums = [2,7,11,15] # target = 9 # # 类型注解 type hint # def twosum(nums:list[int],target:int) -> list[int]: # lst = [] # for k1,v1 in enumerate(nums): # for k2,v2 in enumerate(nums): # if k1 != k2 and v1 + v2 == target: # lst.append(k1) # lst.append(k2) # return lst # # # def twosum2(nums:list[int],target:int) -> list[int]: # lst = [] # for k,v in enumerate(nums): # x = target - v # if x in nums[k+1:]: # lst.append(k) # lst.append(nums[k+1:].index(x)+k+1) # return lst # # print(twosum2(nums,target)) class role(): def __init__(self,name): self.name = name lst1 = {} username = input() lst1[username] = role(username) print(lst1[username].name) print(lst1[0])
python容器---list
最新推荐文章于 2024-07-17 21:04:45 发布