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())) #数据类型
print(list(dic1.keys())) #数据类型
# 查看所有有值
dic1.values()
print(type(dic1.values())) #数据类型
print(list(dic1.values())) #数据类型
# items
dic1.items()
print(type(dic1.items())) #数据类型
print(list(dic1.items())) #数据类型
#其他操作方法
# 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())