高级变量类型
列表,元组,字典,字符串,公共方法,变量高级
元组
●Tuple (元组)与列表类似,不同之处在于元组的元素不能修改
。元组表示多个元素组成的序列
。元组在Python开发中,有特定的应用场景
●用于存储一串信息,数据之间使用,分隔
●元组用()定义
●元组的索引从0开始
元组可以存储不同类型的数据
。索引就是数据在元组中的位置编号
元组的应用
●尽管可以使用for in遍历元组
●但是在开发中,更多的应用场景是:函数的参数和返回值,一个函数可以接收任意多个参数,或者或者 一次返回多个数据
格式字符串,格式化字符串后面的()本质上就是一个元组
让列表不可以被修改,以保护数据安全
-
info_tuple = (
"zhangsan",
18,
1.76)
-
print(
type(info_tuple))
-
# 输出元组索引数据
-
print(info_tuple[
0])
-
-
# 定义空元组
-
empty_tuple = ()
-
print(
type(empty_tuple))
-
-
# 元组中只包含一个元素时,只需要在元素后面加逗号
-
-
info_tuple1 = (
4,)
-
print(info_tuple1)
-
-
# 元组取值和取索引
-
print(info_tuple[
1])
-
print(info_tuple.index(
"zhangsan"))
-
-
# 元组统计计数
-
print(info_tuple.count(
"zhangsan"))
-
-
# 元组总数统计
-
-
print(
len(info_tuple))
-
-
# 元组的循环遍历
-
-
for my_info
in info_tuple:
-
# 使用格式字符串拼接info不方便,因为数据类型不同
-
print(my_info)
-
-
# 格式化字符串和元组,格式化字符串后面的括号本质上就是元组
-
print(
"%s 的年龄是 %d岁,身高是 %.2f米" % (
"zhangsan",
18,
1.76))
-
print(
"%s 的年龄是 %d岁,身高是 %.2f米" % info_tuple)
-
-
# 元组和列表的转换
-
-
num_list = [
1,
2,
3,
4]
-
print(
type(num_list))
-
# 把列表转换为不能被修改的元组
-
num_puple =
tuple(num_list)
-
print((
type(num_puple)))
-
# 把不能被修改的元组转换为可以修改的列表
-
num2_list =
list(num_puple)
字典
●( dictionary (字典) 是除列表以外Python 之中最灵活的数据类型
●字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息
●和列表的区别
。列表是有序的对象集合,字典是无序的对象集合
●字典用{}定义
●字典使用键值对存储数据,键值对之间使用,分隔
。键key是索引
。值value是数据
。键和值之间使用:分隔
。键必须是唯一的
。值可以取任何数据类型,但键只能使用字符串、数字或元组
字典和列表应用
。使用多个键值对,存储描述一个物体的相关信息--描述更复杂的数据信息
。将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
-
# 字典是无序的,输出的和定义的顺序可能不一样
-
xiaoming = {
"name":
"小明",
-
"age":
18,
-
"gender":
True,
-
"height":
1.75}
-
-
print(xiaoming)
-
-
# 字典取值,字典无序,索引用key
-
print(xiaoming[
"name"])
-
print(xiaoming.get(
"name"))
-
-
# 增加/修改
-
xiaoming[
"weight"] =
67
-
xiaoming[
"name"] =
"大明"
-
xiaoming.setdefault(
"lover",
"小红")
-
# key 存在,不会修改,key不存在,新建键值对
-
print(xiaoming)
-
-
# 删除,索引是key
-
xiaoming.pop(
"weight")
-
del xiaoming[
"height"]
-
# pop方法删除,key会报错,del方法删除键值对,key不存在不会报错
-
# xiaoming.popitem()随机删除一个键值对
-
print(xiaoming)
-
-
# 统计键值对数量
-
print(
len(xiaoming))
-
-
# 合并字典,但是如果被合并的字典中有已存在的键值对会覆盖已有的
-
xiaoming1 = {
"weight":
65,
"age":
20}
-
xiaoming.update(xiaoming1)
-
print(xiaoming)
-
# 清空字典
-
-
# xiaoming.clear()
-
print(xiaoming)
-
-
daming = {
"name":
"小明",
-
"age":
18}
-
# 循环遍历
-
# k是每次循环中,获得到的键值对key
-
for k
in daming:
-
print(
"%s - %s" % (k, daming[k]))
-
-
# 字典和列表应用
-
# 使用多个键值对描述一个物体的相关信息,将多个字典放在一个列表里面进行遍历
-
card_list = [
-
{
"name":
"张三",
-
"qq":
"123",
-
"phone":
"111"},
-
{
"name":
"李四",
-
"qq":
"12345",
-
"phone":
"222"},
-
-
]
-
-
for card_info
in card_list:
-
print(card_info)
字符串
●字符串就是一串字符,是编程语言中表示文本的数据类型
●在Python中可以使用一对双引号“”或者一对单引号‘’定义一个字符串
。虽然可以使用\"或者\'做字符串的转义,但是在实际开发中:
■如果字符串内部需要使用”,可以使用'定义字符串
■如果字符串内部需要使用',可以使用”定义字符串
●可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
●也可以使用for 循环遍历字符串中每一一个字符
大多数使用双引号定义字符串
字符串的各种类型
-
str =
" \t\n\r"
-
print(
str.isspace())
-
-
结果:
True
注意:isspace不仅能判断是否只包含空格,还可以判断是否有空白字符,比如:\n,\t,\r
-
# 判断是否只包含数字
-
# 后两个方法可以判断unicode字符串,isnumeric还可以判断中文数字
-
str3 =
"\u00b2"
-
-
print(str3.isdecimal())
-
print(str3.isdigit())
-
print(str3.isnumeric())
-
-
结果:
-
False
-
True
-
True
-
str4 =
"hello python"
-
-
# 判断是否以指定字符串开始
-
print(str4.startswith(
"hello"))
-
-
# 判断是否以指定字符串结束
-
print(str4.endswith(
"python"))
-
-
# 查找指定字符串在母字符串中的位置,
-
# index方法同样可以查找指定字符串在母字符串中的索引,但是如果指定字符串不存在会报错,
-
# find方法查找子字符串在母字符串中的位置,如果不存在会返回-1
-
-
print(str4.find(
"llo"))
-
print(str4.find(
"aaa"))
-
-
# 替换字符串
-
# replace("旧字符串","新字符串")
-
# replce方法会返回一个新的字符串,但是不会修改原有字符串
-
print(str4.replace(
"python",
"world"))
-
print(str4)
-
-
-
结果:
-
True
-
True
-
2
-
-
1
-
hello world
-
hello python
-
# 顺序并居中对齐输出以下内容
-
str
= [
"\t登鹳雀楼",
-
"白日依山尽",
-
"黄河入海流",
-
"欲穷千里目",
-
"更上一层楼"
-
]
-
for str_poem
in str:
-
# 统一左对齐,
10是宽度,后面的中文空格格式
print(
"|%s|"
% str_poem.ljust(
10,
" "))
-
# 统一右对齐
print(
"|%s|"
% str_poem.rjust(
10,
" "))
-
#先使用strip方法去除空白字符,再使用center方法居中输出
-
print(
"|%s|"
% str_poem.strip().center(
10,
" "))
-
-
-
结果:
-
| 登鹳雀楼
|
-
| 白日依山尽
|
-
| 黄河入海流
|
-
| 欲穷千里目
|
-
| 更上一层楼
|
-
# 去除所有空白字符
-
# 再使用“ ”作为分隔符,拼接成一个整齐的字符串
-
str =
"登鹳雀楼\t 白日依山尽 \t \r黄河入海流 \t 欲穷千里目\t \n更上一层楼"
-
# split分割字符串返回一个列表
-
str1 =
str.split()
-
print(str1)
-
result =
" ".join(str1)
-
print(result)
-
-
结果:
-
[
'登鹳雀楼',
'白日依山尽',
'黄河入海流',
'欲穷千里目',
'更上一层楼']
-
登鹳雀楼 白日依山尽 黄河入海流 欲穷千里目 更上一层楼
切片
切片方法适用于字符串,列表,字典
切片使用索引值来限定范围,从一个大的字符串中切出小字符串
列表和元组都是有序的集合,都能够通过索引值来获得数据
字典是一个无序的集合,使用键值对保存数据
字符串[开始索引:结束索引:步长]
字符串的切片
注意:指定区间是左闭右开
-
# 截取2-5位置字符串,
-
# 截取2-末尾的字符串
-
# 截取开始到5位置的字符串
-
# 截取完整的字符串
-
# 从开始位置,每个员工字符截取字符串
-
# 从索引1 开始,每隔一个取一个
-
# 截取2-末尾-1的字符串
-
# 截取末尾两个字符
-
# 字符串的逆序
-
-
#将步长设置为-1即为从右向左切
-
str =
"0123456789"
-
print(
str[
2:
6])
-
print(
str[
2:])
-
print(
str[:
6])
-
print(
str[:])
-
print(
str[::
2])
-
print(
str[
1::
2])
-
print(
str[
2:-
1])
-
print(
str[-
2:])
-
print(
str[::-
1])
-
-
结果:
-
2345
-
23456789
-
012345
-
0123456789
-
02468
-
13579
-
2345678
-
89
-
9876543210
转载:https://blog.csdn.net/qq_44832048/article/details/125418126