元组
元组简介
元组(Tuple)与列表类似,最大的不同之处在于元组的元素不能修改。常用于存储一组固定的信息。
元组使用 ()
定义,索引从 0 开始。
如:
info_tuple = ("Anne", 18, 1.7)
创建空元组:
info_tuple = ()
元组中只包含一个元素时,需要在元素后面添加逗号,否则只是一个单纯的数据类型:
info_tuple = (50, )
元组常用方法
count()
,index()
作用和列表中一样,分别是计数和返回下标。
元组的循环遍历
for item in info_tuple:
print(item)
元组的应用场景
- 作为函数的参数和返回值,一次性传递多种数据
- 格式化字符串
括号内的print("%s 的年龄是 %d,身高是 %.2f" % ("Anne", 18, 1.70))
("Anne",18,1.70)
就是一个元组。info_tuple = ("Anne", 18, 1.70) print("%s 的年龄是 %d,身高是 %.2f" % info_tuple) # 使用元组还可以巧妙地拼接字符串 info_str = "%s 的年龄是 %d,身高是 %.2f" % info_tuple print(info_str)
元组和列表之间的转换
- 元组转换成列表
list(元组)
- 列表转换成元组
tuple(列表)
字典
字典介绍
如果说列表是有序的对象集合,那么字典就是无序的对象集合。通常用于存储描述一个对象的相关信息。使用 print
输出字典时,通常显示的顺序和定义的顺序是不一致的。
字典使用 {}
定义。
字典使用 键值对 存储数据,键 key
是索引,值 value
是数据。键必须是唯一的。
键和值之间用 ;
分隔,键值对之间用 ,
分隔。
值可以取任何类型的数据,但键只能是字符串、数字 或 元组。
如:
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}
字典的常用方法:
取值:字典名[key]
增加 / 修改:字典名[key] = value
- 如果键值对不存在,则是增加
- 如果键值对已存在,则是修改
删除:字典名.pop(key)
统计键值对数量:len(字典名)
合并 / 更新字典:字典名.update(新字典名)
清空字典:字典名.clear()
字典的循环遍历
xiaoming = {"name": "小明",
"qq": "12345",
"phone_number": "10086"}
for k in xiaoming: # k 是每一次循环中,获取到的 key
print("%s: %s" % (k, xiaoming[k]))
可以将多个 字典 放在一个 列表 中,然后循环进行处理。
card_list = [{"name": "张三",
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]
字符串
字符串简介
单引号 ''
和双引号 ""
都能定义字符串。
一般情况下,建议使用双引号定义字符串,因为很多编程语言都用双引号;如果想在字符串中使用双引号,就用但单引号定义字符串,如:
'我的外号是"大西瓜"'
字符串也使用 []
获取单个字符。
字符串遍历:
for char in string
print(char)
字符串常用方法
len(字符串)
:获取字符串的长度count(字符串)
:子字符串 在 字符串 中出现的次数
判断
string.isspace()
:如果 string 中只包含 空白字符(如 空格、\t
、\n
、\r
),则返回True
string = " \t\n\r" print(string.isspace())
True
string.isalnum()
:所有字符都是 字母 或 数字 则返回 Truestring.isalpha()
:所有字符都是字母则返回 True
string.isdecimal()
:若 string 只包含阿拉伯数字,则返回 Truestring.isdigit()
:若 string 只包含 阿拉伯数字、带括号型的数字⑴
、\u00b2
(上标 2:²
),则返回 Truestring.isnumeric()
:若 string 只包含 阿拉伯数字、汉字数字,则返回 True- 以上数字判断均不包括小数。
查找和替换
string.startswith(str)
:若字符串以 str 开头则返回 Truestring.endswith(str)
:若字符串以 str 结束则返回 Truestring.find(str, start=0, end=len(string))
:检测 str 是否包含在指定范围的 string 中,没找到则返回-1
string.index(str, start=0, end=len(string))
:跟 find() 方法类似,不过没找到则会报错string.replace(old_str, new_str, num=string.count(old))
:把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次。
该方法不是修改原有的字符换,而是创建一个新的字符串。
文本对齐
string.center(width)
:返回一个原字符串居中,并使用指定字符填充至长度 width 的新字符串string.ljust(width)
:左对齐string.rjust(width)
:右对齐
poem = ["霜月",
"李商隐",
"初闻征雁已无蝉",
"百尺楼高水接天",
"青女素娥俱耐冷",
"月中霜里斗婵娟"]
for poem_str in poem:
print("|%s|" % poem_str.center(15, " "))
去除空白字符
string.strip()
:截掉 string 左右两边的空白字符string.lstrip()
:截掉左边(开始)的空白字符string.rstrip()
:截掉右边(末尾)的空白字符
拆分和连接
string.split(str="", num)
:以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格poem_str = "霜月 \t 李商隐 \t 初闻征雁已无蝉 \n 百尺楼高水接天 \r 青女素娥俱耐冷 月中霜里斗婵娟" poem_list = poem_str.split() print(poem_list)
string.join(seq)
:以 string 作为分隔符,将 seq 列表中所有的元素合并为一个新的字符串result = " ".join(poem_list) print(result)
爬虫时,这些函数很有用。
字符串的切片
切片 方法适用于 字符串、列表、元组。
字符串[开始索引:结束索引:步长]
指定的区间属于 左闭右开 型,比如 字符串[0:2]
,切出来的是 py
,而不包括 t
。
想从头开始,则只需省略 开始索引;想切到末尾,则只需省略 结束索引
。步长默认为 1
。
num_str = "0123456789"
print(num_str[2:6])
输出结果:2345
print(num_str[2:])
输出结果:23456789
print(num_str[:6])
输出结果:012345
print(num_str[:])
输出结果:0123456789
print(num_str[::2])
输出结果:02468
print(num_str[1::2])
输出结果:13579
print(num_str[-1])
输出结果:9
print(num_str[2:-1])
输出结果:2345678
print(num_str[-2:])
输出结果:89
print(num_str[::-1])
输出结果:9876543210
公共方法
列表、字典、元组、字符串都能使用的方法就是公共方法。
len(item)
:计算容器中元素个数del(item)
:删除变量del
既能当作函数,又能当作关键字- 函数:
del(a[1])
- 关键字:
del a[1]
- 函数:
max(item)
:返回容器中元素最大值min(item)
:返回容器中元素最小值- 对于字典,
max
和min
是针对key
进行比较的
- 对于字典,
- 切片
- 运算符
+
:合并+
是生成新的列表,而list.extend()
是直接追加在原列表后面list.extend()
和list.append()
又有区别:
*
:重复- 字典不能重复,因为须保证
key
是唯一的
- 字典不能重复,因为须保证
成员运算符
in
:元素是否存在于容器内not in
:元素是否不存在于容器内- 对于字典,是针对
key
判断的
- 完整的
for
循环语法for 变量 in 集合: 循环体代码 else: 没有通过 break 退出循环,循环结束后会执行的代码
students = [ {"name": "阿土", "age": 20, "gender": True, "height": 1.7, "weight": 75.0}, {"name": "小美", "age": 19, "gender": False, "height": 1.6, "weight": 45.0}, ] find_name = "阿土" for stu_dict in students: print(stu_dict) if stu_dict["name"] == find_name: print("找到了") break else: print("没有找到") print("循环结束")