python教程

Day2:列表与字典

python教程 51源码 2022-11-25 人阅读

Day2:列表与字典[Python常见问题]

1.列表:使用[ ]存储

切片:

取列表中的某值,其中元素从0开始,如:取第一个元素,则 列表名[0]

取列表中的某些连续值,如:取第三和第四个元素,则 列表名[2:4] “顾头不顾尾”

取列表中的某些值,如:从头取到尾且步长为2,则 列表名[起始位置:终止位置:步长]

取列表中的最后一个值,则 列表名[-1]

取列表中的最后3个值,则 列表名[-3:](实际上从头取的时候前方也可以省略掉)

插入:

在最后添加元素 列表名.append(元素)

在固定位置添加元素 列表名.insert(位置号,元素)

改写:

改写某元素: 列表名[位置] = 元素

删除:

删除某元素 列表名.remove(元素) 或 del 列表名[位置号] 或 列表名.pop(位置号),使用pop时若不写位置则默认删除最后一个元素

索引:print(列表名.index(元素名)) 输出位置

print(列表名.[列表名.index(元素名)] 输出该元素

计数:列表名.count(元素名)

清空列表: 列表名.clear()

反转列表: 列表名.reverse()

排序列表: 列表名.sort()  排序规则按ASCII码排序规则制定

合并列表: 列表名.extend(要合并的列表名)  执行操作后被合并的列表仍存在,要删除的话需要del 该列表

 1 import copy 2 names = ["Sun", "Li", "Ji", [1, 3, 5], "Fan"] 3  4 print(names[::3]) 5 for i in names: 6     print(i) 7 name2 = copy.copy(names)    # 浅copy 8 print(names, name2) 9 name2[2] = "吉"10 name2[3][1] = 411 print(names, name2)12 names.append("Lei")     # 在列表末尾插入13 names.insert(1, "Zhang")    # 在列表位置1处插入14 names[2] = "Xie"    # 替换15 names.remove("Sun")     # 删除16 names.insert(0, "Sun")17 del names[0]    # 删除18 names[0] = "Sun"19 names.pop(0)    # 删除20 print(names)21 print(names.index("Ji"))22 print(names[names.index("Ji")])23 print(names[1], names[2])24 print(names[0:2])   # 切片25 print(names[3])     # 切片26 print(names[-1])    # 切片27 print(names[-3:])   # 切片28 names2 = ["1", "2", "3"]29 names.extend(names2)    # 扩展(合并)列表30 print(names)31 names.reverse()     # 翻转列表32 print(names)33 """names.sort()    # 表内数据类型不同时不能排序34 print(names)"""35 names.clear()   # 清空列表36 print(names)

list operate

 1 ["Sun", [1, 3, 5]] 2 Sun 3 Li 4 Ji 5 [1, 3, 5] 6 Fan 7 ["Sun", "Li", "Ji", [1, 3, 5], "Fan"] ["Sun", "Li", "Ji", [1, 3, 5], "Fan"] 8 ["Sun", "Li", "Ji", [1, 4, 5], "Fan"] ["Sun", "Li", "吉", [1, 4, 5], "Fan"] 9 ["Xie", "Ji", [1, 4, 5], "Fan", "Lei"]10 111 Ji12 Ji [1, 4, 5]13 ["Xie", "Ji"]14 Fan15 Lei16 [[1, 4, 5], "Fan", "Lei"]17 ["Xie", "Ji", [1, 4, 5], "Fan", "Lei", "1", "2", "3"]18 ["3", "2", "1", "Lei", "Fan", [1, 4, 5], "Ji", "Xie"]19 []

Output-LO

2.元组

  只有两个命令 count , index

3.字符串常用操作

 1 name = "My name 	is {name}, and I"m {age} years-old." 2  3 print(name.capitalize())    # 首字母大写,其余小写 4 print(name.count("s"))      # 字符串中某字符出现的次数,可指定开始结束位置 5 print(name.casefold())      # 将所有大写字母转换为小写,类似lower()方法 6 print(name.center(50, "-"))     # 打印50个字符,不够的用-补齐,且将name放于中间 7 print(name.endswith("C"))   # 判断字符串是否以指定后缀结尾,是True否False,可指定开始结束位置 8 print(name.startswith("M"))     # 判断字符串是否以指定前缀开始,是True否False,可指定开始结束位置 9 print(name.expandtabs(tabsize=0))    # 将字符串中的	转换为指定数量的空格10 print(name.find("name"))    # 索引字符(串)的开始位置-可用于字符串切片11 print(name.format(name="SJC", age=18))      # 格式化12 print(name.format_map({"name": "SJC", "age": 18}))  # 可传字典格式13 print(name.isalnum())       # 检测字符串是否由字母和数字组成14 print(name.isalpha())       # 检测字符串是否只由字母组成15 print(name.isdecimal())     # 检查字符串是否只包含十进制字符16 print(name.isdigit())       # 检测字符串是否只由数字组成17 print("Name".isidentifier())  # 判断是否是一个合法的标识符(变量名)18 print(name.islower())       # 检测字符串是否由小写字母组成19 print(name.isnumeric())     # 检测字符串是否只由数字组成。这种方法是只针对unicode对象。20 print(name.istitle())       # 检测字符串是否是标题格式21 print(name.isupper())       # 检测字符串是否由大写字母组成22 print(",".join(["1", "2", "3"]))      # 将序列(字符串、列表等)中的元素以指定的字符连接生成一个新的字符串 str.join(sequence)23 print(name.ljust(50, "*"))  # 打印50个字符,不够的用*补齐,将name放于前方24 print(name.rjust(50, "@"))  # 打印50个字符,不够的用*补齐,将name放于后方25 print(name.lower())         # 大写换小写26 print(name.upper())         # 小写换大写27 print("SJC".lstrip())   # 从左侧去除空格或回车28 print("SJC".rstrip())   # 从右侧去除空格或回测29 print("SJC".strip())    # 去除两侧空格或回车30 p = str.maketrans("SJC", "123")31 # 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标32 # 两个字符串的长度必须相同,为一一对应的关系33 print("SJC".translate(p))   # 用p的映射关系转换字符SJC后输出34 print("baidu.com".partition("."))  # 据指定的分隔符将字符串进行分割35 # 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串36 print("python is funny".replace("n", "*", 1))   # 替换且可指定最大替换次数37 print(name.rfind("a"))     # 从左向右查找,找到最右侧的a并返回其位置38 print(name.rsplit())39 print("1+2+3+4".split("+"))     # 将字符串按照要求分割为列表(默认为空字符,可指定其他字符),可指定分割次数40 print(name.swapcase())      # 大小写互化41 print(name.title())         # 化成标题格式42 print(name.zfill(50))       # 从左侧用0填充字符串至指定长度

String Operate

 1 ["Sun", [1, 3, 5]] 2 Sun 3 Li 4 Ji 5 [1, 3, 5] 6 Fan 7 ["Sun", "Li", "Ji", [1, 3, 5], "Fan"] ["Sun", "Li", "Ji", [1, 3, 5], "Fan"] 8 ["Sun", "Li", "Ji", [1, 4, 5], "Fan"] ["Sun", "Li", "吉", [1, 4, 5], "Fan"] 9 ["Xie", "Ji", [1, 4, 5], "Fan", "Lei"]10 111 Ji12 Ji [1, 4, 5]13 ["Xie", "Ji"]14 Fan15 Lei16 [[1, 4, 5], "Fan", "Lei"]17 ["Xie", "Ji", [1, 4, 5], "Fan", "Lei", "1", "2", "3"]18 ["3", "2", "1", "Lei", "Fan", [1, 4, 5], "Ji", "Xie"]19 []

Output

4.字典:一种key – value 的数据类型,使用就像上学用的字典,通过笔画、字母来查对应页的详细内容

1 info = {2     "stu1101": "SJC",3     "stu1102": "WRR",4     "stu1103": "WK"5 }

dic_ex

4.1 字典操作

增改:字典名[key] = value  若键值存在,则改数据;若不存在,则字典内新增一条

删除:del 字典名[key]/字典名.pop(key)

查找:字典名[key] 如果key不存在会报错

字典名.get(key) 通过print输出存在则返回值,不存在则返回None

         ‘key’ in 字典名-通过print输出False 或 True看key是否存在

查找字典内全部数据:字典名.values()

查找字典内全部键值:字典名.keys()

字典名.setdefault(“key”,”value”):若存在key则返回其值,若不存在则创建新key与值

字典名.update(字典名2) 合并字典,有相同key则覆盖原字典内value

字典名.items() 字典转列表

dict.fromkeys([6,7,8],”test”) 初始化一个字典,有三个key 6, 7 ,8且values全部为test

 1 info = { 2     "stu1101": "SJC", 3     "stu1102": "WRR", 4     "stu1103": "WK" 5 } 6 print(info) 7 print(info["stu1101"])      # 如果key不存在会报错 8 info["stu1101"] = "ZYH"     # key存在则改其value不存在则新增 9 print(info)10 print("stu1104" in info)    # key存在返回True否则返回False11 print(info.get("stu1104"))      # 如果key不存在会返回None12 print(info.values())        # 输出所有value13 print(info.keys())          # 输出所有key14 print(info.items())         # 字典转列表输出15 16 info2 = {17     "stu1105": "LY",18     "stu1106": "SJC"19 }20 info.update(info2)          # 字典合并有交叉则覆盖21 print(info)22 info.setdefault("stu1104", "ZJL")   # key存在则返回其现有值不存在则创建新值及其value23 print(info)

Operate_ex

 1 {"stu1101": "SJC", "stu1102": "WRR", "stu1103": "WK"} 2 SJC 3 {"stu1101": "ZYH", "stu1102": "WRR", "stu1103": "WK"} 4 False 5 None 6 dict_values(["ZYH", "WRR", "WK"]) 7 dict_keys(["stu1101", "stu1102", "stu1103"]) 8 dict_items([("stu1101", "ZYH"), ("stu1102", "WRR"), ("stu1103", "WK")]) 9 {"stu1101": "ZYH", "stu1102": "WRR", "stu1103": "WK", "stu1105": "LY", "stu1106": "SJC"}10 {"stu1101": "ZYH", "stu1102": "WRR", "stu1103": "WK", "stu1105": "LY", "stu1106": "SJC", "stu1104": "ZJL"}

Output

4.2 多级字典

 1 world_map = { 2     "China": { 3         "Hebei": ["Northeast", "flat area"], 4         "Yunnan": ["Southwest", "hilly land"] 5     }, 6     "Japan": { 7         "Tokyo": ["Capital", "qqq"], 8         "Osaka": ["South", "ppp"] 9     },10     "America": {11         "New York": ["Famous of interest", "Statue of Liberty"],12         "Washington": ["Capital", "White House"]13     }14 }15 world_map["China"]["Hebei"][1] = "Nice"16 print(world_map)

Multi_level_dic

4.3 循环字典

1 for i in info:      # 循环字典,高效,推荐2     print(i)    # 只打印key3     print(i, info[i])   # 打印key及其value4 5 for k, v in info.items():   # 先将字典转为列表,数据量大时耗时长,不推荐6     print(k, v)     # 打印key及其value

dic_circulation

5.练习与作业

# 购物车程序
# 1.启动程序后,让用户输入工资,然后打印商品列表
# 2.允许用户根据商品编号购买商品
# 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
# 4.可随时退出,退出时,打印已购买商品和余额

S1: 自我练习版

 1 # 购物车程序 2 # 1.启动程序后,让用户输入工资,然后打印商品列表 3 # 2.允许用户根据商品编号购买商品 4 # 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 5 # 4.可随时退出,退出时,打印已购买商品和余额 6 import sys 7  8 goods = ["Phone", "Necklace", "Bike", "MP4", "Ipad", "Cup"] 9 price = [2299, 8200, 1088, 888, 2469, 46]   #存两个表,需要一一对应,不方便10 pychased = []11 price2 = price.copy()12 price2.sort()13 salary = int(input("Please tell me your salary here:"))     #强转,输入字符串会报错,不推荐14 doc = salary15 while salary >= (price2[0]):16     for i in range(1, 7):17         print(i, ":", goods[i-1], "", price[i-1])18     m = input("Please input goods number to buy it(Or input "q" to exit):")19     if m != "q":20         j = int(m)21         if j < 1 or j > 7:22             print("Wrong goods number,please input again")23         elif salary >= price[j-1]:24             balance = salary - price[j-1]25             salary = balance26             pychased.append(goods[j-1])27             print(f"You have bought {goods[j-1]}, and your balance is {balance}.")28         else:29             print("You don"t have enough money to buy this good, please try another cheaper one!")30     else:31         if salary >= doc:32             print(f"You ha
版权声明:文章搜集于网络,如有侵权请联系本站,转载请说明出处:https://www.51yma.cn/jiaocheng/python/742.html
文章来源:
标签 字典 列表