1、tuple(元组)
元组被称为只读列表,即数据可以被查询,但不能被修改,列表的切片操作适用于元组。
元组写在小括号()里,元素之间用逗号隔开。
虽然tuple的元素不可改变,但他可以包含可变的对象,比如list列表
构造包含0个或者1个元素的元组比较特殊,所以有一些额外的语法规则。
#__author:"Jiang Hai" #date:2018/6/11 # 空元素 tup1 = () # 一个元素,需要在元素后添加逗号 tup2 = (20,) print(tup1) print(tup2) #错误 尝试修改 # tup2[0] = "10" # print(tup2)
作用:
1.对于一些数据我们不想被修改,可以使用元组。
2.另外,元组的意义还在于,元组可以在映射(和集合的成员)中当做键使用--而列表则不行,元组作为
很多内建函数和方法的返回值存在
a = [[1,2,3],4,"JiangHai",(5,6,7),True] print(a[0][1]) print(a[1]) print(a[2]) print(a[3][1]) print(a[4])
简单小程序 购物车:
#__author:"Jiang Hai" #date:2018/6/11 # 商品列表 product_list = [ ('Mac',9000), ('Kindle',800), ('tesla',90000), ('python book',105), ('bike',2000), ] # 购物车 shoppingcar = [] # 你的工资 money = input("please input your money:") if money.isdigit(): money = int(money) print("=================product list======================") for i,v in enumerate(product_list,1): print(i,">>>>>>",v) print("=================product end======================") while True: choice = input("选择商品编号:") if choice.isdigit(): choice = int(choice) if choice > 0 and choice <= len(product_list): p_item = product_list[choice-1] if money - p_item[1] > 0: money = money - p_item[1] shoppingcar.append(p_item) else: print("余额不足,还剩:%s"%money) continue else: print("输入编码错误!") elif choice == "quit": print(shoppingcar) print("余额:%s"%money) break else: print("请继续购买")
2.字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算
,根据计算的结果决定value的存储地址,所以字典是无需存储的,且key必须是可哈希的。可哈希表示key必须
是不可变类型 如:数字、字符、元组。
字典(dictionary)是除了列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序
的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
创建字典:
#__author:"Jiang Hai" #date:2018/6/ # 创建字典 dic1 = {'name':'alex','age':30,'sex':'male'} dic2 = dict((('name','alex'),)) print(dic1) print(dic2) print(dic1['name']) #自定的对应操作 #增 setdefault 如果有这个键就不做任何修改,有就添加,并且有返回值 dic1 = {'mane':'alex'} dic1['age'] = 18 print(dic1) #setdefault 如果有这个键就不做任何修改,有就添加,并且有返回相应的键值 dic1.setdefault('sex','man') print(dic1) dic1.setdefault('age',19) #有就不修改 print(dic1) #删 dic1 = {'name':'alex','age':30,'sex':'male'} #删除键值对,并返回该键值对的值 ret = dic1.pop('age') print(ret) #删除真个字典 del dic1['name'] print(dic1) #清空键值对 dic1.clear() print(dic1) #随机删除 dic1 = {'name':'alex','age':30,'sex':'male'} a = dic1.popitem() print(a,dic1) #改 update 添加进去,如果键相同,则修改原有键的值 dic4 = {'name':'alex','age':30,'sex':'male'} dic5 = {'name01':'alex','age01':30,'sex01':'male01'} dic4.update(dic5) print(dic4) #查 通过键去查找 dic1 = {'name':'alex','age':30,'sex':'male'} print(dic1['name']) # 查看所有键 dic1.keys() print(dic1.keys()) print(type(dic1.keys())) #<class 'dict_keys'>数据类型 print(list(dic1.keys())) #<class 'list'>数据类型 # 查看所有有值 dic1.values() print(type(dic1.values())) #<class 'dict_keys'>数据类型 print(list(dic1.values())) #<class 'list'>数据类型 # items dic1.items() print(type(dic1.items())) #<class 'dict_keys'>数据类型 print(list(dic1.items())) #<class 'list'>数据类型 #其他操作方法 # dict.fromkeys()给创建的字典中的每一个键附一个初始的值 dic6 = dict.fromkeys(['host1','host2','host3'],'test') print(dic6) dic6['host2'] = 'test01' print(dic6) # dict.fromkeys()创建的字典如果键对应的值是列表,修改的时候会修改所有的键相对的值 dic6 = dict.fromkeys(['host1','host2','host3'],['test1','test2']) print(dic6) dic6['host2'][1]='test3' print(dic6) #排序 根据key排序 dic1 = {'name':'alex','age':'aa','sex':'male'} print(sorted(dic1)) print(sorted(dic1.items())) #不能做排序 原因是str和int不能做排序,同类型数据可以排序 print(sorted(dic1.values())) #循环取值 dic1 = {'name':'alex','age':30,'sex':'male'} # 效率高 for i in dic1: print(i,dic1[i]) # 效率低 for i,v in dic1.items(): print(i,v) # 字典用于描述对象是最方便的
字符串:
#__author:"Jiang Hai" #date:2018/6/11 #字符串 print("Let's go") #重复输出字符串 print("Let's go"*20) #字符串切片 print("hello"[2:]) # in 成员运算符 -如果字符串中包含制定的字符返回 True print("e21" in "hello") print("123" in ["222","111","123"]) # 格式字符串 print("hello,jianghai") print("hello, %s"%'jianghai') # 字符串拼接 ,+效率低,%效率低 a = "111" b = "222" c = a+b print(c) # 字符串拼接join 尽量用这个比较好用和效率高 c = ''.join([a,b]) print(c) # python中字符串内置方法 st = "Hello kitty" # 判断出现次数 st.count("l") print(st.count("l")) # 这个字符串首字母大写 print(st.capitalize()) # 字符串居中,其他位置用非空字符串填写 print(st.center(50,"-")) # 以某个字符串结尾 print(st.endswith("y",1,6)) # 以某个字符串开头 常用 print(st.startswith("H")) # 扩大空格 st2 = "Hello\t kitty" print(st2.expandtabs(tabsize=10)) # 查找某个字符串出现的位置,显示第一次出现的额位置 print(st.find('t')) # 格式化输出 区别在与参数不同一个是变量,另一个是字典 (大括号怎么解决) str3 = "hello kitty {name} is {age}" print(str3.format(name="JiangHai",age=30)) print(str3.format_map({'name':'Jianghai','age':30})) #包含字符串和字母 print(st.isalnum()) #判断是否是一个十进制的数 print("b0010".isdecimal()) # 是不是一个整数 print("123123".isdigit()) print("111111".isnumeric()) # 变量名是不是一个非法字符 print("34afds".isidentifier()) # 是否是全小写 print("afdsafAAA".islower()) # 是否是全大写 print("ffffffdDDD".isupper()) #是不是一个空格 print(' '.isspace()) #是不是一个标题 标题每个单词首字母大写 print('My Title'.istitle()) #大写变小写 print("ABCDaa".lower()) #小写变大写 print("afdsfsAD".upper()) # 小写变大写,大写变小写 print("JiangHai".swapcase()) # 实际字符串靠左边,右边用某个字符串补充 print("JiangHai".ljust(50,'*')) print("JiangHai".rjust(50,'*')) # 去掉空符去掉前后的格和换行 print(" fsadfdsa afdsf afdsafa afds ".strip()) print(" fsadfdsa afdsf afdsafa afds ".lstrip()) print(" fsadfdsa afdsf afdsafa afds ".rstrip()) #替换 print('My title title'.replace("tle","lesson",1)) # 从右边向做找 print('My title title'.rfind('t')) # 分割字符串 返回列表 print('My title title'.split(" ",1)) # 从右向左做分割 print('My title title'.rsplit("i",1)) # title 格式 print('My title title'.title())