Python学习 Week2 part1
本周内容较多,一时间消化不了,分两段写出来
part1:列表和元组
part2:字符串和字典等
列表
#列表的定义 #list=['list0','list1','list2'','...'] names=['zhangsan','lisi','wangwu','zhaoliu']
列表的操作
获取多个元素
#通过下标获取列表中的元素 #列表元素的下标从0开始 #list=[0,1,2,3,...] names=['zhangsan','lisi','wangwu','zhaoliu'] >>>names[0] 'zhangsan' >>>names[1] 'lisi' >>>names[2] 'wangwu' #从最后一个获取 >>>names[-1] 'zhaoliu' >>>names[-2] 'wangwu' #list[start:stop:step] names=['zhangsan','lisi','wangwu','zhaoliu'] >>>names[1:]#从1开始到列表结束,等效于names[1:len(names)],names[1::] ['lisi', 'wangwu', 'zhaoliu'] >>>names[:1]#取列表第一个元素,等效于names[0:1],names[1] ['zhangsan'] >>>names[:]#取列表全部元素,等效于names[0:len[names]] ['zhangsan','lisi','wangwu','zhaoliu'] >>>names[::2] ['zhangsan', 'wangwu']#取列表全部元素,步长为2。等效于names[0::2],names[0:len(names):2],names[0:3:2](已知元素数量的情况下) >>>names[::-1]#取全部元素,步长为-1(反向获取) ['zhaoliu', 'wangwu', 'lisi', 'zhangsan']
增加
#在列表末尾增加一个元素 names=['zhangsan','lisi','wangwu','zhaoliu'] names.append('abc') print(names) ['zhangsan','lisi','wangwu','zhaoliu','abc']
插入
#在指定位置前插入一个元素 #在元素3前插入一个元素 names=['zhangsan','lisi','wangwu','zhaoliu'] names.insert(3,'abc') print(names) #在列表末尾元素前插入一个元素 names=['zhangsan','lisi','wangwu','zhaoliu'] names.insert(len(names)-1,'abc') print(names) #输出结果相同len(names)-1等于4-1等于3 ['zhangsan', 'lisi', 'wangwu', 'abc', 'zhaoliu']
修改
#修改增加的abc为def names=['zhangsan','lisi','wangwu','zhaoliu'] names.insert(3,'abc') print(names) names[3]='def' print(names) #输出结果 ['zhangsan', 'lisi', 'wangwu', 'abc', 'zhaoliu'] ['zhangsan', 'lisi', 'wangwu', 'def', 'zhaoliu']
删除
#方法1 #pop()不含参数,默认删除末尾的元素 names=['zhangsan','lisi','wangwu','zhaoliu'] names.pop() print(names) #输出结果 ['zhangsan', 'lisi', 'wangwu'] #包含参数,删除对应下标的元素 names=['zhangsan','lisi','wangwu','zhaoliu'] names.pop(1) print(names) #输出结果 ['zhangsan', 'wangwu', 'zhaoliu'] #方法2 #用del函数删除 del names[1] #输出结果 ['zhangsan', 'wangwu', 'zhaoliu'] #方法3 #list.remove(元素) names.remove('lisi') #输出结果 ['zhangsan', 'wangwu', 'zhaoliu']
追加
#list1.extend(list2)将列表2的元素追加到列表1末尾 names=['zhangsan','lisi','wangwu','zhaoliu'] names1=[1,2,3] names.extend(names1) print(names) #输出结果 ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 1, 2, 3] #注意:list1.extend(list2)和list1+list2都是将两个列表合并,但是extend的运算效率更高。
统计
#统计列表中元素的数量 names=['zhangsan','lisi','wangwu','zhaoliu'] print(names.count('lisi')) #输出结果 2
copy
#复制一个列表 names=['zhangsan','lisi','wangwu','zhaoliu'] names2=names.copy() print(names) print(names2) #输入结果 ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] #稍作修改 names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]] names2=names.copy() print(names,names2) names[-1][2]=5 print(names,names2) #输出结果 ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]] #正常情况下对names进行修改,names2不会更改,但是更改names嵌 #套的列表值,为什么names2也改了? #原来主列表只是存储了嵌套列表在内存中的地址,而不是所看到的数据, #copy的也只是嵌套列表的地址,但两个地址指向的是内存中同一块区域, #所以在对嵌套列表进行修改时,只是通过了两个复制地址而修改了真实数 #据,所以两个列表的元素都被改掉了。 #我们俗称浅copy。 #下面介绍另一种copy方法 #引用copy模块 import copy names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]] names2=copy.copy(names) print(names,names2) names[-1][2]=5 print(names,names2) #执行结果不变 #copy模块中的copy也是浅copy #deepcopy才是深copy import copy names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]] names2=copy.deepcopy(names) print(names,names2) names[-1][2]=5 print(names,names2) #输出结果 ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] #这样就不会再改变了
排序和翻转
#按照大小正向排序 names=['zhangsan','lisi','wangwu','zhaoliu','1','2','3'] names.sort() print(names) #输出结果 ['1', '2', '3', 'lisi', 'wangwu', 'zhangsan', 'zhaoliu'] #注意:不同类型的元素不可以排序。sort是一个可变对象的方法或者属性,不需要任何返回值,所以name2=names.sort()只能返回None值,不能把排序后的对象赋值。 #翻转列表 names=['zhangsan','lisi','wangwu','zhaoliu',1,2,3] names.reverse print(names) #输出结果 [3, 2, 1, 'zhaoliu', 'wangwu', 'lisi', 'zhangsan'] #切片可以达到相同的效果,步长为-1 names1=['zhangsan','lisi','wangwu','zhaoliu',1,2,3] names1=names1[::-1] print(names1) #输出结果 [3, 2, 1, 'zhaoliu', 'wangwu', 'lisi', 'zhangsan']
获取下标
#通过index方法获取下标 names=['zhangsan','lisi','wangwu','zhaoliu',1,2,3] print(names.index('wangwu')) #输出结果 2 #注意,这里只返回找到相同元素中第一个元素的下标
元组
元组与列表相似,唯一不同的是,元组一旦创建,不可更改
元组只有index和count两种方法。
#元组使用圆括号 names=(zhangsan,lisi,wangwu,zhaoliu)
简单应用
购物车程序
product_list = [ ('iphone',5800), ('mac pro',12000), ('bike',800), ('book',120), ('coffee',31) ] shopping_cart=[] salary=input("please input yor salary") if salary.isdigit(): salary=int(salary) while True: for index,item in enumerate(product_list): #print(product_list.index(item),item) print(index,item) user_choice = input("请选择商品:>>>") if user_choice.isdigit(): user_choice=int(user_choice) if user_choice <len(product_list) and user_choice>=0: p_item=product_list[user_choice] if p_item[1]<=salary: shopping_cart.append(p_item) salary-=p_item[1] print('added %s into shopping cart,your current balance is \033[31;1m%s\033[0m'%(p_item,salary)) else: print("\033[41;1m你的余额只剩[%s]啦\033[0m"% salary) else: print("product code [%s] is not exist"%user_choice) elif user_choice=='q': print('--------shopping list-----------') for p in shopping_cart: print(p) print('your current balance:',salary) exit() else: print('Error') else: print('Bye Bye') exit()
(以上代码使用Python3.6.1编写,纯手敲,IDE:PyCharm)
以上是本周Python学习笔记part1。
如有错误的地方,欢迎指正,互相学习!
Life is short,you need Python!
人生苦短,我用Python!
当你发现自己的才华撑不起野心的时候,就安静下来学习吧~

浙公网安备 33010602011771号