数据类型
对象
Python 对象特征
所有的Python 对象都拥有三个特性:
特性 | 说明 | 例子 |
---|---|---|
身份 | 每一个对象都有一个唯一的身份,标识自己, 任何对象的身份可以使用内建函数id() 来得到 | id(username) |
类型 | 决定了该对象可以保存什么类型的值, 可以进行什么样的操作,以及遵循什么样的规则。 用内建函数type() 查看对象的类型 | type(username) |
值 | 对象表示的数据项 | print(username) |
Python 对象属性
某些Python 对象有属性、值或相关联的可执行代码,用点.
标记法来访问属性。最常用的属性是函数和方法,不过有一些Python 类型也有数据属性。含有数据属性的对象包括(但不限于):类、类实例、模块、复数和文件。
>>> username.
userName.capitalize( userName.isdigit( userName.rfind(
userName.casefold( userName.isidentifier( userName.rindex(
userName.center( userName.islower( userName.rjust(
userName.count( userName.isnumeric( userName.rpartition(
userName.encode( userName.isprintable( userName.rsplit(
userName.endswith( userName.isspace( userName.rstrip(
userName.expandtabs( userName.istitle( userName.split(
userName.find( userName.isupper( userName.splitlines(
userName.format( userName.join( userName.startswith(
userName.format_map( userName.ljust( userName.strip(
userName.index( userName.lower( userName.swapcase(
userName.isalnum( userName.lstrip( userName.title(
userName.isalpha( userName.maketrans( userName.translate(
userName.isascii( userName.partition( userName.upper(
userName.isdecimal( userName.replace( userName.zfill(
对象身份比较
对象可以通过引用被赋值到另一个变量,因为每个变量都指向同一个(共享的)数据对象,只要任何一个引用发生改变,该对象的其它引用也会随之改变。
>>> x = 1
>>> y = x
>>> id(x)
4318726800
>>> id(y)
4318726800
>>>
Numbers(数字)
基本数字类型
关键字 | 解释 | 例子 |
---|---|---|
int | 有符号整数 | 自然数 |
bool boolean | 布尔值 | True:1 False:0 |
float | 浮点数 | π |
complex | 复数 |
进制间的数字表示方式
Python 默认以十进制数显示,可以用其他方法表示数字:
进制 | 表达 | 实例 |
---|---|---|
10 进制 | 默认表达方式 | 11 |
2 进制 | 数字以0b 或0B 开头 | 0b11 |
8 进制 | 数字以0o 开头 | 0o11 |
16 进制 | 数字以0x 或0X 开头 | 0x11 |
>>> 11
11
>>> 0b11
3
>>> 0o11
9
>>> 0x11
17
>>>
String(字符串)
定义
-
由字母、数字、下划线组成
-
Python 中字符串被定义为引号之间的字符集合。Python 支持使用成对的单引号或双引号,无论单引号,还是双引号,表示的意义相同。Python 还支持三引号(三个连续的单引号或者双引号),可以用来包含特殊字符;Python 不区分字符和字符串。
# 07 - 字符串的定义.py username = 'GJL' username = "GJL" username = '''GJL''' username = """GJL""" print(type(username))
字符串拼接
其他类型如数字类型无法拼接
若拼接数字等可用强制类型转化
-
使用
+
拼接print("ab"+"cd") #输出"abcd"
-
使用占位符拼接
-
使用
.format
-
占位符所在字符串前加
f
add="bc" print(f"a{add}d") # 引号前无 f 时 {add} 不会当作引用 add 变量,而会被当做字符串“{add}”输出
-
-
字符串重复
使用
*
print("a"*10) #输出"aaaaaaaaaa"
字符串相关函数
操作 | 函数 |
---|---|
将单个字符转化成ASCII 码 | ord(‘a’) |
将ASCII 码转化位字符 | chr(97) |
计算字符串长度 | len(“asd”) |
将其他数据类型转换为字符串类型 | str(123) |
字符串常用内建函数
常用内建函数 | 说明 | 示例 |
---|---|---|
s.strip() | 删除字符串实例字符串两端的空白 | ’ GJL '.strip() |
s.replace(sub,rep) | 搜索s 字符串中的sub, 并替换为rep | ‘gjl’.replace(‘g’,‘c’) |
s.split© | 分割字符串,并返回一个列表, 可以指定分隔符c,默认为空白。 | ‘127.0.0.1’.split(‘.’) |
s.center(width) | 返回一个原字符串居中, 并使用空格填充至长度width 的新字符串 | “GJL”.center(11) |
s.upper() | 转换字符串实例中的小写字母为大写 | ‘gjl’.upper() |
s.lower() | 转换字符串实例中的大写字母为小写 | ‘GJL’.lower() |
字符串比较
判断两个字符串是否相等使用==
判断子串
使用 in
索引值 / 角标 / 下标
-
输出字符串中的单个字符
字符串[索引值]
如字符串"abcdefgh" a b c d e f g h的索引值分别为(从0开始) 0 1 2 3 4 5 6 7 print(str[5])的输出为"f"
字符串截取(切片)
-
str[i,j] 左闭右开
i 角标的起始位置
j 角标的结束位置
str = "abcdefgh" str2 = str[3:7] print(str2) #输出"defg"
不写i则从索引值0开始
不写j则截取到末尾
-
步长值
str = "abcdefgh" str2 = str[3:7:2] print(str2) #[起始位置:结束位置:步长值] #步长值 跨度为2,每两个选中一个 #输出"df"
-
索引值为负数
索引值为负几就是倒数第几位(不能超过字符串长度)
str = "abcdefgh" str2 = str[-2] print(str2) #输出 "g"
-
倒序输出(反向取值)
要加步长(默认步长为1,从左往右取值)
str = "abcdefgh" str2 = str[-1:-10:-1] print(str2) #输出 "hgfedcba"
简化
str = "abcdefgh" str2 = str[::-1] print(str2) #输出 "hgfedcba"
-
全部取值
str = "abcdefgh" str2 = str[:] print(str2) #输出 "abcdefgh"
-
字符串中所包含的索引值
in
if "liang" in "guojialiang" : print("yes") #输出结果 "yes"
-
.strip()
用于移除字符串头尾指定的字符或字符序列-
默认为空格或换行符
-
移除指定字符
str = "aaabcdefa" print(str.strip("a")) # 输出 bcdef
-
List(列表)
定义
列表使用 ”[]“ 标识
list = []
特点
-
复合数据类型,一个列表内的不同元素可以是不同数据类型
-
一个变量中存储多个数据值
-
支持字符,数字,字符串甚至可以包含列表(嵌套列表、多维列表)
-
每个元素间用 “,” 隔开
-
索引值
list = ["asd",123,"a1"] print(list[1]) #输出 123 #与字符串一样,索引值都是从零开始 #"asd"对应的索引值为0 #"123"对应的索引值为1 #"a1"对应的索引值为3
作用于列表的函数
直接向函数中传参,参数为列表。
函数 | 说明 | 示例 |
---|---|---|
list() | 将序列转化成列表 | list(‘ABCDE’) |
len() | 长度 | len(stu) |
max() | 最大值 | max(stu) |
min() | 最小值 | min(stu) |
sorted() | 排序 | sorted(stu) |
enumerate() | 取脚标和元素 | list(enumerate(stu)) |
列表内建函数
函数 | 说明 | 注释 |
---|---|---|
l.append(new) | 向列表中添加一个对象new | |
l.pop(obj) | 删除列表中的元素 | 偏移量 |
l.count(obj) | 返回一个对象obj 在列表中出现的次数 | |
l.index(obj) | obj 首次出现的位置 | |
l.insert(index,obj) | 在偏移量为index 的位置插入对象obj | |
l.reverse() | 翻转列表 | |
l.sort() | 排序 | |
l.extend(seq) | 把序列seq 的内容添加到列表中 |
赋值
-
直接赋值
list = ["asd","123","a1"] print(list) #输出效果['asd', '123', 'a1']
-
.append追加
list = [] list.append("abc") list.append(123) print(list) #输出效果 ['abc', 123]
-
空格间隔,将多个元素输入列表
list = input().split() print(list) #输入 asd 12 sad1 ioi #输出 ['asd', '12', 'sad1', 'ioi']
列表属于序列
由于列表也是序列类型,所以+
|*
| in
| not in
,都适用于列表,但是需要注意参与运算的对象属于同一类型。
list = ["asd",123,"a1"]
if "asd" in list :
print("asd in list")
if "as" not in list :
print("as not in list")
#输出 "asd in list"
# "as not in list"
Tuple(元组)
-
元组基本类似于list列表,元组用 () 标识。内部元素用逗号隔开
但是元组不能二次赋值,相当于只读列表,但可包含可变对象
元组定义
可以认为元组是静态的列表,元组一旦定义,不能改变。
>>> stu1 = ("GJL", True, 24, 59.9)
>>> type(stu1)
<class 'tuple'>
>>> stu1[3]
59.9
>>> stu1[3] += 0.1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
成员关系判断
由于元组也是序列类型,所以作用在序列上的操作都可以作用于元组,通过in
、not in
判断成员关系
>>> 24 in stu1
True
>>>
单元素元组
如果一个元组中只有一个元素,那么创建该元组的时候,需要加上一个逗号。
>>> t = ("GJL")
>>> type(t)
<class 'str'>
>>> t = ("GJL",)
>>> type(t)
<class 'tuple'>
>>>
序列
字符串、列表、元组都是序列。
序列类型操作符
序列操作符 | 作用 |
---|---|
序列偏移量,脚标[n] | 获取脚标中的元素 |
序列切片,脚标[x:y] | 取脚标之间的值,y 的值不取 |
序列 * n | 重复输出n 次数 |
序列1 + 序列2 | 序列累加拼接 |
元素 in 序列 | 判断元素是否在字符串中 |
内建函数
函数 | 含义 |
---|---|
list(可迭代对象) | 转换为列表,可以将字符串转化为列表。 |
str(对象) | 将对象转换为字符串 |
tuple(可迭代对象) | 把可迭代对象转为元组 |
len(可迭代对象) | 返回对象长度 |
enumerate(可迭代对象) | 返回两个值一个脚标一个对应值 |
sorted(可迭代对象) | 对迭代对象排序,返回一个有序列表 |
reversed(可迭代对象) | 逆序迭代器 |
Dictionary(字典)
-
字典用"{ }"标识
-
字典没有索引值
-
靠键值对取值(key-value)
{“key” : “value”}
-
键(key)必须使用不可变类型(数字、字符串、元组)
-
在同一个字典中,键(key)必须是唯一的
定义
-
基本形式
dict = {"tom" : "123"} print(dict) print(type(dict)). #输出 {'tom': '123'} #输出 <class 'dict'>
dict = {"tom" : "123" , "jerry" : "456"}
创建字典
出了可以通过{ }
操作符创建字典,还可以通过dict()
工厂方法创建字典或者通过fromkeys()
创建具有相同值的默认字典
>>> stu2 = dict((['name','LL'],['sex',True],['age',25],['score',69.9]))
>>> stu2
{'name': 'LL', 'sex': True, 'age': 25, 'score': 69.9}
>>> stu3 = {}.fromkeys(('name','sex','age','score'),24)
>>> stu3
{'name': 24, 'sex': 24, 'age': 24, 'score': 24}
>>>
访问字典
-
字典是映射类型,意味着它没有下标,有键值对,访问字典中的值需要使用相应的键。
不可使用索引值
dict = {"tom" : "123"} dict[0] #报错
-
使用key索引
dict = {"tom" : "123"} print(dict["tom"]) #输出结果 “123”
dict = {"tom" : "123" , "jerry" : "456"} print(dict["jerry"]) #输出结果 “456”
更新字典元素
通过键名更新字典键值:如果字典中有该键名,则更新对应的键值。如果字典中没有该键名,则向字典中添加键值对
dict = {"tom" : "123" , "jerry" : "456" , "lisa" : "789"}
dict["tom"] = "321"
print(dict["tom"])
#运行结果 "321"
删除字典元素
使用pop()
方法可以“弹出”字典中的元素。
>>> stu1.pop("e-mail")
'2279913178@qq.com'
>>> stu1
{'name': 'GJL', 'sex': True, 'age': 24, 'score': 60.0}
>>>
字典的内建方法
方法 | 说明 |
---|---|
d.copy() | 返回字典的一个副本 |
d.get(key) | 对字典dict 中的键key,返回它对应的值value, 如果字典中不存在此键,则返回default 的值 |
d.keys() | 返回一个包含字典中键的列表 |
d.values() | 返回一个包含字典中所有值的列表 |
d.update(dict2) | 将字典dict2 的键-值对添加到字典dict |
d.items() | 返回一个包含字典中(键,值)对元组的列表 |
字典内元素判断
-
判断用户名(键)是否在字典中
dict = {"tom" : "123" , "jerry" : "456"} print("tom" in dict) #输出结果 True print("bob" in dict) #输出结果 False
-
判断输入的姓名(键)是否与其密码(值)匹配
dict = {"tom" : "123" , "jerry" : "456" , "lisa" : "789"} name = input("请输入姓名:") password = input("请输入密码:") if name in dict and dict[name] == password : print("yes") else : print("no")
Set(集合)
-
是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员;基本功能是进行成员关系测试和删除重复元素;可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
set()函数只接受一个参数,且改参数类型不为数字类型