Python高级变量类型
- 列表 List
- 元组 Tuple
- 字典 Dictionary
- 字符串 String
- 公共方法 Common
列表 List
- 细节
List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组- 专门用于存储 一串 信息
- 列表用
[] 定义,数据 之间使用 , 分隔 - 列表的 索引 从
0 开始 - 索引** 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
- 当索引超出范围时,会报错
IndexError: list index out of range - 增
list.append(元素) 末尾加数据
list.extend(list2) 将list2列表添加到list后
+ 很神奇 包括上面两种方法 - 删
list.remove(元素) 删除list中第一个相同的元素
list.clear() 删除元素 list本身还存在
list.pop() 删除末尾数据
list.pop(x) 删除list[x] 数据
del list 直接将list从内存中删除,与clear有着本质不同 - 改
list[x] = a 将list中第x+1的数据修改为a - 查
list.sort() 升序排序
list.sort(reverse=True) 降序排序
list.reverse() 逆序、反转 - 切片
[start:en:step] 从[start,end) 左闭右开 step为步长
step 正 表示从左往右 step 负 表示从右往左 - 列表推导式
[元素操作 条件] 例:[x*x for x in range(1,20) if x%2 == 0] 将[1,20)内偶数作为列表元素
列表推导式实质上是将for in 遍历按照顺序写在一行中
元组 Tuple
元组定义好是常量,之后不可变
- 细节
1 Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改
2 元组 表示多个元素组成的序列
3 元组 在 Python 开发中,有特定的应用场景
4 用于存储 一串 信息,数据 之间使用 , 分隔
5 元组用 () 定义
6 元组的 索引 从 0 开始
7 索引 就是数据在 元组 中的位置编号
例:定义
info_tuple = (50, )
- 增
元组本身不可随意增加数据,但是可以通过切片,更新原先元组,实现数据的增加
a = ('北','京','迎','你',)
print(a)
a = a[0:2]+('欢',)+a[2:]
print(a)
注意 这里的切片更新,一定要明白切片从0开始,左闭右开,同时中间加的数据,要以元组的形式添加,这里添加一个元素,要用元组,同时一个元素后面要加,号
一般公式:
a = (1,2,3,4,5,6,7,8)
print(a)
a = a[:3]+(99,99,)+a[3:]
print(a)
b = (1,2,6,7,8,3,4,5)
print(b)
b = b[:2]+b[5:]
print(b)
del b
- 改
元组一经定义,作为常量存储,不可以对其进行修改 以上的增加和删除都是建立在更新元组的基础上,而不是修改它 - 遍历
for x in info_tuple:
print(x)
c = (1,1,1,1,2,3,4,5)
print(c.count(1))
print(c.index(1))
- 重点
1 当成一个整体,作为函数的参数或者时返回值,一个函数可以通过元组,返回多个值
2 同时,元组和列表之间可以相互转换
字典 Dictionary
- 细节
1.字典和列表之间的区别:
列表是 有序 的对象集合
字典是 无序 的对象集合
2.字典用**{}**定义
3.定义要求
字典使用 键值对 存储数据,键值对之间使用 , 分隔
- 键
key 是索引 - 值
value 是数据 - 键 和 值 之间使用
: 分隔 - 键必须是唯一的
- 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
例:
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}
xiaoming.clear() 删除内部元素 但是本身字典依旧存在和del不一样
xiaoming.items() 以键值对形式返回dict_items([('name', '小明'), ('gender', True)])
xiaoming.keys() 返回值为key的列表
xiaoming.pop(key) 删除key值对应的键值对
xiaoming.values() 返回值为value的列表
xiaoming.popitem() 删除表尾键值对
for k in xiaoming:
print("%s: %s" % (k, xiaoming[k]))
- 一定要注意字典是通过
[]取值的,在循环的时候,需要用[]调用
books = [
{
'name':'Tom',
'age':21,
'country':'China'
},
{
'name': 'Jack',
'age': 23,
'country': 'USA'
},
{
'name': 'Lisa',
'age': 24,
'country': 'Us'
}
]
for item in books:
print(item['name'],item['age'],item['country'])
运行结果:

这里的列表中套着字典,用for循环,item表示的是books中的每个元素,二每个元素是字典,针对字典是用[]表示,所以用item['name']表示即可
字符串
- 细节
- 字符串 就是 一串字符,是编程语言中表示文本的数据类型
- 在 Python 中可以使用 一对双引号
" 或者 一对单引号 ' 定义一个字符串
- 虽然可以使用
\" 或者 \' 做字符串的转义,但是在实际开发中:
- 如果字符串内部需要使用
",可以使用 ' 定义字符串 - 如果字符串内部需要使用
',可以使用 " 定义字符串
- 可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始
- 也可以使用
for 循环遍历 字符串中每一个字符
str = "Hello World"
for x in str:
print(x,end="")
for a in str:
print(a)
- 判断类型 - 9
| 方法 | 说明 |
|---|
| string.isspace() | 如果 string 中只包含空格,则返回 True |
| string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
| string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True |
| string.isdecimal() | 如果 string 只包含数字则返回 True,全角数字 |
| string.isdigit() | 如果 string 只包含数字则返回 True,全角数字、⑴、\u00b2 |
| string.isnumeric() | 如果 string 只包含数字则返回 True,全角数字,汉字数字 |
| string.istitle() | 如果 string 是标题化的(每个单词的首字母大写)则返回 True |
| string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True |
| string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True |
- 查找和替换 - 7
| 方法 | 说明 |
|---|
| string.startswith(str) | 检查字符串是否是以 str 开头,是则返回 True |
| string.endswith(str) | 检查字符串是否是以 str 结束,是则返回 True |
| string.find(str, start=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 |
| string.rfind(str, start=0, end=len(string)) | 类似于 find(),不过是从右边开始查找 |
| string.index(str, start=0, end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 |
| string.rindex(str, start=0, end=len(string)) | 类似于 index(),不过是从右边开始 |
| string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次 |
- 大小写转换 - 5
| 方法 | 说明 |
|---|
| string.capitalize() | 把字符串的第一个字符大写 |
| string.title() | 把字符串的每个单词首字母大写 |
| string.lower() | 转换 string 中所有大写字符为小写 |
| string.upper() | 转换 string 中的小写字母为大写 |
| string.swapcase() | 翻转 string 中的大小写 |
- 文本对齐 - 3
| 方法 | 说明 |
|---|
| string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
| string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
| string.center(width) | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 |
- 去除空白字符 - 3
| 方法 | 说明 |
|---|
| string.lstrip() | 截掉 string 左边(开始)的空白字符 |
| string.rstrip() | 截掉 string 右边(末尾)的空白字符 |
| string.strip() | 截掉 string 左右两边的空白字符 |
- 拆分和连接 - 5
| 方法 | 说明 |
|---|
| string.partition(str) | 把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面) |
| string.rpartition(str) | 类似于 partition() 方法,不过是从右边开始查找 |
| string.split(str="", num) | 以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格 |
| string.splitlines() | 按照行(’\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表 |
| string.join(seq) | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
公共方法 Common
| 函数 | 描述 | 备注 |
|---|
| len(item) | 计算容器中元素个数 | |
| del(item) | 删除变量 | del 有两种方式 |
| max(item) | 返回容器中元素最大值 | 如果是字典,只针对 key 比较 |
| min(item) | 返回容器中元素最小值 | 如果是字典,只针对 key 比较 |
- 切片
适用的数据类型为列表 元组 字符串 - 细节
1 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
2 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
3 字典 是一个 无序 的集合,是使用 键值对 保存数据,不可以使用切片 - 使用
[开始索引:结束索引:步长]
1 从头开始,开始索引,数字可以省略,冒号不能省略
2 到末尾结束,结束索引,数字可以省略,冒号不能省略
3 步长默认为 1,如果连续切片,数字和冒号都可以省略
4 正序 步长为正数,开始索引小于结束索引
5 倒叙 步长为负数,开始索引大于结束索引
num_str = "0123456789"
print(num_str[2:6])
print(num_str[:])
print(num_str[::2])
print(num_str[-2:])
print(num_str[::-1])
print(num_str[5:0:-1])
| 运算符 | Python 表达式 | 结果 | 描述 | 支持的数据类型 |
|---|
| + | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 |
| * | [“Hi!”] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 | 字符串、列表、元组 |
| in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典 |
| not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组、字典 |
| > >= == < <= | (1, 2, 3) < (2, 2, 3) | True | 元素比较 按照对应字符ASCII比较 | 字符串、列表、元组 |
小白一个,希望可以和大家一起学习!