Python 数据类型

数据类型

对象

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))
    

字符串拼接

其他类型如数字类型无法拼接

若拼接数字等可用强制类型转化

image-20231030145213707

  • 使用+拼接

    print("ab"+"cd")
    #输出"abcd"
    
  • 使用占位符拼接

    • 使用.format

      image-20231030114005015

    • 占位符所在字符串前加 f

      add="bc"
      print(f"a{add}d")
      # 引号前无 f 时 {add} 不会当作引用 add 变量,而会被当做字符串“{add}”输出
      

      image-20231030113728967

  • 字符串重复

    使用*

    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()

字符串比较

判断两个字符串是否相等使用==

image-20231030150626897

判断子串

使用 in

image-20231030150809343

索引值 / 角标 / 下标

  • 输出字符串中的单个字符

    字符串[索引值]

    如字符串"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
>>>

成员关系判断

由于元组也是序列类型,所以作用在序列上的操作都可以作用于元组,通过innot 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()函数只接受一个参数,且改参数类型不为数字类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gjl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值