时隔如此之久才写了入门2,真是不太好意思了。
- 列表、元组
首先,列表和元组都是有序的,元组可以理解成只读的列表(const),列表用'[',元组用'('。
#! /usr/bin/env python # Author: JackyHou names = ["zhangsan", "lisi", "wangwu"] names.append("lijingyi")#后加 names.insert(1, "xiaolizi") # print(names[0:2])#左闭右开 # # print(names[-1])#从右开始数 # print(names[-3:])#冒号后不写东西, 就是右边第三个直到最后全部 # print(names[:3]) print(names) #delete #方法1 # names.remove("xiaolizi") # print(names) #方法2 # del names[1] # print(names) #方法3 # names.pop()#可带参数 # print(names) #find print(names.index("xiaolizi")) print(names.pop(names.index("xiaolizi"))) print(names) #count names.append("lijingyi") print(names.count("lijingyi")) #reverse names.reverse() print(names) #sort names.sort() print(names) #extend names2 = [1, 2, 4, 5] names.extend(names2) del names2 print(names)
在使用列表时要注意一个地方:关于浅拷贝和深拷贝的问题
浅拷贝:copy
深拷贝:deepcopy
他们的的区别在于当列表是多级列表时,浅拷贝和直接赋值会使两个对象的二级列表的指针指向同一个对象(即任何操作都会在两个对象上反应出来,一损俱损一荣俱荣),而深拷贝才是平时所理解的拷贝(完全拷贝)
#! /usr/bin/env python # -*- coding:utf-8 -*- # Author: JackyHou import copy person = ['name', ['saving', 100]] # p1 = copy.copy(person) # p2 = person[:] # p3 = list(person) p1 = person[:] p2 = person[:] p1[0] = 'hjq' p2[0] = 'ljy' p1[1][1] = 50 print(p1) print(p2)
[1, ['equal', 2, 4], 4] [1, ['equal', 2, 4], 4] [1, ['equal', 'copy', 4], 4] [1, ['equal', 'copy', 4], 4] [1, ['equal', 'copy', 4], 4] [1, ['equal', 'copy', 'deepcopy'], 4]
- String的基本操作
#! /usr/bin/env python # Author: JackyHou name = "my name is {name}, I'm {year}." print(name.capitalize()) print(name.count('a')) print(name.center(50, '*')) print(name.endswith("ou")) print(name.expandtabs(30)) print(name.find('is')) print(name.format(name='JackyHou', year=22)) print(name.format_map({'name': 'JackyHou', 'year': 22})) print(name.isalnum()) print('abc123'.isalnum()) print('abcABC'.isalpha()) print('1A'.isdecimal()) print('_1a'.isidentifier())#判断是不是一个合法的标识符 print('abc'.islower())#是不是小写 print('22.11'.isnumeric())#纯数字 print(name.isspace()) print('My Name Is'.istitle()) print('My Name is'.isprintable())#tty file, drive file print("My Name is".isupper()) print(':'.join(['1', '2', '3'])) print(name.ljust(50, '*')) print(name.rjust(50, '*')) print("Jacky".lower()) print("Jacky".upper()) print(' \nhaha'.lstrip()) print('haha \n'.rstrip()) print(' hha '.strip()) la = str.maketrans("abcdef", '123456') print("JackyHou".translate(la)) print(name.replace('m', '1', 2)) print('hahahxhahahxha'.rfind('x'))#从右边开始找 print('hah hah haha ah'.split(' '))#分割 print('hahah+dkfjal\njldafjlad'.splitlines())#行分割 print('JackyHou'.swapcase())#反向大小写 print('hah hah ha'.title()) print('jacky hou'.zfill(50))
- 字典
#! /usr/bin/env python # Author: JackyHou #key-value info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", } print(info) #print(info["stu1101"]) info["stu1101"] = "武藤兰" info["stu1104"] = "CangJingkong" print(info) #del info["stu1101"] # info.pop("stu1101") # info.popitem()#随机删一个 # print(info) #find print(info.get('stu1105')) print('stu1105' in info) b = { 'stu1101': "Rihana", 1: 3, 4: 5, } info.update(b) print(info) c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444]) print(c) c[7][1]['name'] = "Jack Chen"#这是一个坑!!!!!!!!!!! fromkeys函数会把后面的当成一个整体,所以改了一个就全部都改了 print(c) print(info.items()) #高效 for i in info: print(i, info[i]) #低效 for k, v in info.items(): print(k, v)
- 三级菜单
#! /usr/bin/env python # Author: JackyHou # data = { # '北京': { # "沙河": ["oldboy", "test"], # "天通苑": ["链家地产", "我爱我家"] # }, # "朝阳": { # "望京": ["奔驰", "陌陌"], # "国贸": ["CICC", "HP"], # "东直门": ["Advent", "飞信"], # }, # # } data = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } exit_flag = False while not exit_flag: #第一层菜单 for i in data: print(i) choice = input("SELECT>>>>>:") if choice in data: while not exit_flag: #第二层菜单 for j in data[choice]: print("\t", j) choice2 = input("SELECT>>>>>:") if choice2 in data[choice]: while not exit_flag: #第三层菜单 for k in data[choice][choice2]: print("\t\t", k) choice3 = input("SELECT>>>>>:") if choice3 in data[choice][choice2]: for n in data[choice][choice2][choice3]: print("\t\t\t", n) choice4 = input("INPUT 'b' TO BACK") if choice4 == 'b': pass elif choice4 == 'q': exit_flag = True if choice3 == "b": break elif choice3 == 'q': exit_flag = True if choice2 == 'b': break elif choice2 == 'q': exit_flag = True if choice == 'b': break elif choice == 'q': exit_flag = True
注意pass的用法:
其实没啥用。pass是空语句,为了保持程序结构的完整性。不做任何事情,
一半用作占位语句。
一半用作占位语句。