元组:
元组的定义:也是一种有序的集合。但与list不同,一旦初始化后不能修改
元组的创建:
tuple1 = () #创建空元组
tuple2 = () #创建空元祖
tuple3 = (1,) #创建只有一个元素的元组
tuple4 = 1, #创建只有一个元素的元组
注意:当元组只有一个元素的时候,我们必须在该元素的末尾添加一个逗号,来消除歧义,元组小括号可以省略,但是逗号不能省略。
获取元组的长度:
len(tuple)
元组的访问:
tuple = (元素1,元素2,元素3,…元素n)
通过索引/下标来进行访问:
tuple[index]
index的取值方位[0,len(tuple)]
index取值可以分为负,为负的时候,从右往左进行取值
修改元组:
在元组内部添加一个可变对象,通过修改可变对象进而来修改元组,在元组中一旦初始化则不能修改值得是元组一旦创建,它对应的元素的指向不会再发生变化。
删除元组:
del tuple
tuple1 = (1,2,3,4,5,True,"hello",[1,2,3])
print(len(tuple1)) #8
print(tuple1[5]) #True
print(tuple1[-2]) #hello
print(tuple1[-1]) #[1,2,3]
tuple1[-1][-1] = "good" #(1, 2, 3, 4, 5, True, 'hello', [1, 2, 'good'])
元组的操作:
1.元组的连接/组合
使用"+" tuple3 = tuple1 +tuple2
功能:将tuple1与tuple2中的元素去出,重新组合成一个新的元组并且返回。
2.元组的重复
tuple2 = tuple1*n
功能:将tuple1中的元素重复n次输出到新的元组中
3.元素 in 元组
判断元素是否在元组中存在,若存在则返回True,否则返回False
4.元素的截取:
tuple[start?step]
start:默认0
end:默认len(tuple1)
step:默认1,取值可以为负
5.max(tuple1)
功能:返回tuple1中最大的元素
6.min(tuple1)
功能:返回tuple1中最小值
7.tuple(list1)
功能:将列表转为元组
8.二维元组
tuple1 = (t1,t2,t3,…tn)
功能:当元组中的元素刚好又是元组的时候,我们称这个元组为二维元组
9.二维元组的访问
tuple[index1][index2]
index1:代表第几个元组
index2:代表元组中第几个元素
10.tuple.count(x)
功能:统计x在tuple1中出现的次数
11.tuple.index(obj,start,end)
功能:在tuple中查找obj,若找到则返回第一个匹配到的下标值,若找不到则报错查询范围
[start,end),若不指定则查询整个元组。
需求:遍历tuple3
tuple1 = (1,2,3,"hello","good",True,12.34)
tuple2 = (4,5,6)
tuple3 = (tuple1,tuple2)
for t in tuple3:
for value in t:
print(value,end="\t")
print()
tuple1 = (1,2,3,"hello","good",True,12.34)
tuple2 = (4,5,6)
print(tuple2.count(5)) #1
print(tuple1.index(3,0,3)) #2
tuple3 = (tuple1,tuple2)
print(tuple3) #((1, 2, 3, 'hello', 'good', True, 12.34), (4, 5, 6))
字符串:
str1.splitlines(keepend = False)
功能:将str1按行切片,并且将切片的结果作为一个列表返回,keepend默认为Fasle,当keepend为True的时候,显示切片的字符(/n)
str2.join(序列)
功能:将序列中的字符串以指定的str2进行拼接,并将拼接好的字符串返回
min(str1)
功能:返回str1中最小字符(比较的是ASCII码值)
max(str1)
功能:返回str1中的最大字符
str1.replace(old,new,count)
参数一:被替换的字符串
参数二:新的字符串
参数三:替换的个数,若不指定默认全部替换
功能:使用new将str1中old字符串进行替换,若指定count则替换前count个,若不指定则全部替换
判断字符串是否以xx开头
str1.startswith(“xx”[,start][,end])
若是以xx开头则返回True,否则返回False,若指定范围,则取值范围为[start,end],若不指定范围,则默认整个字符串
判断字符串是否以xx结尾
str1.endswitch(“xx”[,start][,end])
若是以xx结尾则返回True,否则返回False,若指定范围,则取值范围为[start,end],若是不指定范围,则默认整个字符串
将普通字符串转为二进制
str1.encode()
将二进制字符串转为普通字符串
str2.decode()
注意:编码的格式与解码的格式必须保持一致
str3 = "you are a nice man nice nice 你是一个好人"
print(str3.endswith("nice")) #False
print(str3.replace("nice","good"))#you are a good man good good 你是一个好人
dic = str4.maketrans("yn","12")
str4 = str3.translate(dic)
print(str4) #1ou are a 2ice ma2 2ice 2ice 你是一个好人
字符串常用函数:
str1.isalpha()
功能:判断str1是否为纯字母,若是则返回True,否则返回False
注意:此功能没有考虑中文,中文默认也是字母
str1 = "hello中国" #True
str1.isalnum()
功能:判断str1是否有数字与字母组成,若是则返回True,否则返回False
str1 = "hello中国" #True
str1.isupper()
功能:判断str1中出现的字符是否全部都为大写,若是则返回True,否则返回False
str1 = "hEllo " #False
str1.istitle()
功能:判断str1是否为标题字符串,若是则返回True,否则返回False
str4 = "Hello11" #True
str1.isspace()
功能:判断str1中是否只包含空白符,若是则返回True,否则返回Fasle
print("".isspace()) #False
print(" ".isspace()) #True
判断电话号码是否合法:
1.11位
2.全部为数字
3.以1开头
phonenum = input("请输入一个电话号码:")
if len(phonenum) == 11 and phonenum.isdecimal() and phonenum.startswith("1"):
print("电话号码合法。。。")
else:
print("电话号码非法。。。")
字典:
本质也是一个集合,是一个无序的集合,存储的时候以键值对key-value来进行存储
key的要求:
1.字典中的key必须是唯一的
2.字典中的key必须是不可变对象
不可变对象:
str, number, bool, None, tuple
可变对象:
list, dict, set
字典的创建:
dict1 = {key1:value1,key2:value2,…keyn:valuen}
元素的访问:
dict[key]
dict.get(key)
使用上面两种方式我们都可以访问元素,使用get方法获取的时候,当key不存在的时候,不会报错,而是返回None,若使用key直接获取,当key不存在的时候,则会报错。
scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print(scoredict["王二"]) #20
print(scoredict.get("王二")) #20
print(scoredict.get("王三")) #None
添加元素/更改元素:
dict[key] = value
原因:字典中的key不能重复,它对应的值只有一个,后面添加的元素会将前面的覆盖。
scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
scoredict["韩梅梅"] = 90
print(scoredict)#{'张三': 89, '李四': 80, '王二': 20, '麻子': 67, '韩梅梅': 90}
scoredict["张三"] = 88
print(scoredict)#{'张三': 88, '李四': 80, '王二': 20, '麻子': 67, '韩梅梅': 90}
删除元素:
dict.pop(key)
功能:根据key删除对应的键值对
scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print(scoredict.pop("麻子"))
print(scoredict) #{'张三': 88, '李四': 80, '王二': 20, '韩梅梅': 90}
字典的遍历:
scoredict = {“张三”:89,“李四”:80,“王二”:20,“麻子”:67}
#单独访问key:
for k in scoredict.key():
print(k) #张三 李四 王二 麻子
#单独访问value:
for v in scoredict():
print(v) #89 80 20 67
#同时访问key和value:
for item in scoredict.items():
print(item) #('张三', 89) ('李四', 80) ('王二', 20) ('麻子', 67)
列表与字典的区别和联系:
1.存储方式:
字典存储的时候以键值对的方式存储
列表只存储了字典中的value
2.占用空间:
字典占用空间比较大
原因:1.字典需要存储key
2.字典不是紧密排列的
3.查询速度:
当数据量越大的情况下,字典的优势会更加明显