Python的基本数据类型,数字类型、字符串、容器类型

本文详细介绍了Python的基础数据类型,包括数字类型的整型、浮点型和复数,字符串的操作如判断、查找、转换、填充、拼接、分割和格式化,以及数据结构中的列表、元组、字典和集合。内容涵盖数字类型进制转换、字符串的常用方法和数据结构的增删改查等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、数字类型

1.1  整型

1.2  浮点型

1.3  复数  complex

2、字符串

2.1  判断系列  is

2.2  查找统计类

2.3  转换类

2.4  填充、拼接、分割

2.5  格式化

3、常量 Nonetype

4、布尔类型  Booleans

5、数据结构(容器类型)

5.1  列表  list

5.2  元组tuple

5.3  字典dict()

5.4  集合set


1、数字类型

1.1  整型

        内有几种进制:

        转换:

  •  二进制函数   bin()
  • 八进制   oct()
  • 十进制  int( )
  • 十六进制   hex()

1.2  浮点型

  • round         (num,保留几位)
  • decimal      精确小数

from decimal import Decimal
mydec = Decimal(1.223)
print(mydec)
mydec = Decimal("1.223")
print(mydec)


输出:
1.2230000000000000870414851306122727692127227783203125
1.223

1.3  复数  complex

        实部和虚部存储的都是浮点型。

2、字符串

常用方法:

2.1  判断系列  is

        字符串常用方法——判断系列(True/False)

  • str.isdigit()             字符串中是否只包含数字
  • str.isnumeric()       字符串中是否只包含数字(包括中文一到九等)
  • str.isalnum()            字符串中是否只包含字母或数字
  • str.istitle()                 字符串中是否每个单词首字母大写,其他字母小写
  • str.isalpha()              字符串中是否只包含字母(汉字会算作字母)
  • str.isupper()              字符串中是否全为大写
  • str.islower()               字符串中是否全为小写
  • str.isidentifier()          字符串是否为合法标识符
  • str.isprintable()          字符串是否为可打印字符
  • str.isspace()              字符串中是否只包含空格(tab也算空格)
  • str.startswith(prefix[, start[, end]]      字符串是否以某字符串开始,可以通过start和stop参数设置搜索范围
  • str.endswith(suffix[, start[, end]])      字符串是否以某个字符串结束,可以通过start和stop参数

2.2  查找统计类

  • len(str)            长度
  • str.count(" ")   子串出现的次数
  • str.index(" ")   查找子串第一次出现的位置
  • str.find(" ")      查找子串第一次出现的位置

        str.index(sub [,start [,end]]) 显示substring在字符串中第一次出现的下标位置,没有会报错。

        str.find(sub [,start [,end]]) 查找substring,找到返回其起始位置, 找不到返回-1。

2.3  转换类

  • str.upper           大写
  • str.lower           小写
  • str.title              首字母大写
  • str.swapcase() 大小写互换
  • str.replace("旧", "新")  字符替换
msg = "i am ok"
msg1 = msg.upper()
print(msg1)

输出:
I AM OK

2.4  填充、拼接、分割

        填充:

  • str.center(width[, fillchar])
  • str.ljust(width[, fillchar])
  • str.rjust(width[, fillchar])
msg = "iamok"
print(msg.center(20,"^"))
print("iamok".center(20,"*"))

输出:
^^^^^^^iamok^^^^^^^^
*******iamok********

        拼接、分割:

msg = "iamok"
msg1 = "1244"
msg2 = " t:r:y "
print(msg+msg1)
print(msg.join(msg1))
print("~".join(msg))
print(msg2.split(),msg2.split(":"))

输出:
iamok1244
1iamok2iamok4iamok4
i~a~m~o~k
['t:r:y'] [' t', 'r', 'y ']

        str.split('sep') 指定'sep'作为分隔符将字符串切割成列表,分隔符可以是任意字符(默认是空格),str.strip()     默认去掉首尾的空格。

2.5  格式化

         基本格式:
        %[(name)][flags][width].[precision]typecode
        - (name):命名。
        - flags: +,-,' '或0。+表示右对齐;-表示左对齐;' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐,0表示使用0填充。
        - width表示显示宽度。
        - precision表示小数点后度精。

        ① %  占位符格式化

str = input("Please input your name:")
age = input("Please input your age:")
print("my name is %s, my age is %s"%(str,age))

输出:
Please input your name:c
Please input your age:18
my name is c, my age is 18

        ②format  格式化

        {变量:[填充字符][对齐方式 <^>][宽度][格式]}

        <左对齐  ^居中   >右对齐

print("format01-->{1:*<8}".format(9, 9))
print("my name is {0},age is {1}".format("c", 18))
print("my name is {1},age is {1}".format("c", 18))

输出:
format01-->9*******
my name is c,age is 18
my name is 18,age is 18

        ③ f  标志位格式化

str = input("Please input your name:")
age = input("Please input your age:")
print(f"my name is {str}, my age is {age}")

输出:
Please input your name:c
Please input your age:18
my name is c, my age is 18

         Python3支持,Python2不支持。

⑥切片

        请参考:

        Python的切片及切片的使用方法_忙碌且充实的博客-优快云博客_python中的切片的用法

3、常量 Nonetype

        Python里面没有常量。

        什么是常量?
        常量是指一旦初始化后就不能修改的固定值,注意:在Python中表示一个常量通常用大写(约定俗成,非强制)表示,如:PI=3.1415926。

4、布尔类型  Booleans

        布尔值(Booleans) 布尔值是一个逻辑值,可以参与运算。

        1.哪些值布尔值为假

  •  '', 0, 0.0, (), [],{},None, False
  • None是一个特殊的常量,表示一种特殊的数据类型(NoneType)
  • 哪些值布尔值为真
  • 除了为假的,其他的都为真

        取值范围
        • 只有 True和 False(真和假)

5、数据结构(容器类型)

5.1  列表  list

        有序项目集合,可以存放任何数据类型对象,可变数据类型(string,不可变类型)。

        ①增加

  • append
  • insert
  • extend

        变量名.append("xx")   在末尾追加xx,每次只能追加一个元素。

        insert 在指定下标位置插入元素  变量名.insert(位置,新增元素)。

        变量名.extend("")拆开元素,参数需要是可迭代对象(可被for循环获取的就是可迭代对象)。

append
>>> list=[1,2,3]
>>> list.append(0)
>>> list
[1, 2, 3, 0]

insert
>>> list.insert(1,5)
>>> list
[1, 5, 2, 3, 0]

extend
>>> list.extend("bbb")
>>> lsit
[1, 5, 2, 3, 0, 'b', 'b', 'b']

        ③删除

  • remove
  • pop
  • clear
  • del

        remove  按元素删除,若有重复删除遇到的第一个元素,若列表中无指定元素会报错,退出。

        删除 pop  指定下标删除,默认删除最后一个,并且将删除元素作为返回值返回。

        clear 清空列表。

        del lst[3:5]  删除引用,只要切片能切出来,或通过下标取出来,那del都能删除。

remove
>>> list.remove(5)
>>> list
[1, 2, 3, 0, 'b', 'b', 'b']

pop
>>> list
[1, 2, 3, 0, 'b', 'b', 'b']
>>> list.pop(0)
1
>>> list
[2, 3, 0, 'b', 'b', 'b']

.clear
>>> list.clear()
>>> list
[]

del
>>> lis=[1,2,3]
>>> del lis[2]
>>> lis
[1, 2]

④修改、查询

        切片修改,一定要接受可迭代对象;如果切片出来的列表为空,则会在start的位置插入;切出来的不为空,则替换查找出来的list元素。

>>> lst=[2, 3, 0, 'b', 'b', 'b']
>>> lst[1:5]
[3, 0, 'b', 'b']
>>> lst[1:5]="c"
>>> lst
[2, 'c', 'b']
>>> lst[1:1]="imok"
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b']

⑤顺序

  • lst.sor()
  • lst.reverse()

        负切片,不修改本身,lst.sort(reverse = True) 倒序排序,字符串按照Unicode的编码进行排序,按第一个字符顺序来编码。

>>> lst[::-1]
[9, 8, 7, 6, 5, 4, 3, 'l']
>>> lst
['l', 3, 4, 5, 6, 7, 8, 9]
>>> lst.reverse()
>>> lst
[9, 8, 7, 6, 5, 4, 3, 'l']

>>> lst1
[5, 99, 0, 4, 5, 6]
>>> lst1.sort()
>>> lst1
[0, 4, 5, 5, 6, 99]

>>> lst6 = [2,6,2,4,6,8]
>>> lst6.sort(reverse = True)
>>> lst6
[8, 6, 6, 4, 2, 2]
>>> lst6.sort(reverse=False)
>>> lst6
[2, 2, 4, 6, 6, 8]

⑥复制

浅拷贝
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'lst2' is not defined
>>> lst2=lst
>>> lst2
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> id(lst)
140414121457288
>>> id(lst2)
140414121457288
>>> lst.append("5566"
>>> lst2
[2, 'i', 'm', 'o', 'k', 'c', 'b', '5566']



>>> lst3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'lst3' is not defined
>>> lst3=lst[::]
>>> lst3
[2, 'i', 'm', 'o', 'k', 'c', 'b']


深拷贝
>>> lst4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'lst4' is not defined
>>> lst4=lst.copy()
>>> lst4
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst.append("5566")
>>> lst4
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b', '5566'

        浅拷贝:浅拷贝里的元素是对原对象元素的引用,因此 lst2 中的元素和 lst 指向同一个列表对象。
        所谓深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。

⑦运算

        可以进行 +和* 的运算。

>>> lst
[1, 2]
>>> lst10=lst*2
>>> lst10
[1, 2, 1, 2]
>>> lst11=lst+lst10
>>> lst11
[1, 2, 1, 2, 1, 2]

5.2  元组tuple

        有序项目集合,可存放任意数据类型,不可变数据类型,一旦定义不能改变,只有一个元素,一定要在一个元素后面打逗号,若元组里面有可变数据类型 ,可变数据类型可以改变。

>>> t1 = ("a", [1, 4], 5.3)
>>> t1[1]
[1, 4]
>>> t1[1].append(5)
>>> t1
('a', [1, 4, 5], 5.3)

>>> t3 =(1,)
>>> type(t3)
<class 'tuple'>
>>> t4 = (5)
>>> type(t4)
<class 'int'>

5.3  字典dict()

        d2.get('a', 0),dict.get(key, default)获取key的值,如果没有就会返回default的默认值,若没有定义default则会返回None。

>>> d2 = {"a":2, "b":6}
>>> d2['a']
2
>>> d2.get('c', 0)
0
>>> d2.get('a', 0)
2

        ①新增 

        key存在则修改,不存在表示新增,判断是否存在,‘xx’in dict 获取的是key的值,直接取值dict[key],当key不存在,会报错。

>>> d2['c'] = 5
>>> d2
{'a': 2, 'b': 6, 'c': 5}
>>> d2['c'] = 6
>>> d2
{'a': 2, 'b': 6, 'c': 6}
>>> d2['d'] = 1
>>> d2
{'a': 2, 'b': 6, 'c': 6, 'd': 1}

>>> d2
{'a': 2, 'b': 6, 'c': 6}
>>> 'y' in d2
False
>>> 6 in d2
False
>>> 6 in d2.values()
True
>>> d2.values()
dict_values([2, 6, 6])

        ②删除 

        d.pop('key) 有返回值,d.popitem(key )有返回值,默认删除最后一个。

>> d2
{'a': 2, 'b': 6, 'c': 6, 'd': 1}
>>> d2.pop('a')
2
>>> d2
{'b': 6, 'c': 6, 'd': 1}
>>> d2.popitem()
('d', 1)
>>> d2
{'b': 6, 'c': 6}

        ③修改 

  • d2.update(d3)
  • dict(d2,**d4)     d2和d4合并生成一个全新的字典
>>> d2
{'b': 6, 'c': 6}
>>> d1={"a":1}
>>> dict(d2,**d1)
{'b': 6, 'c': 6, 'a': 1}
>>> d2
{'b': 6, 'c': 6}
>>> d1.update(d2)
>>> d1
{'a': 1, 'b': 6, 'c': 6}
>>> d2
{'b': 6, 'c': 6}
>>> d2.update(b='a')
>>> d2
{'b': 'a', 'c': 6}

        ④复制

        参考list 

5.4  集合set

        天生去重,元素必须是可hash对象,set和dict唯一的区别是没有存储对应的values,简要的说可哈希的数据类型,即不可变的数据结构(数字类型(int,float,bool)字符串str、元组tuple、自定义类的对象)。

>>> s1={1,1,2,2,3,4}
>>> s1
{1, 2, 3, 4}

        ①增加add;updeate 需要为可迭代对象

>>> s1.add(5)
>>> s1
{1, 2, 3, 4, 5}
>>> s1.update("abc")
>>> s1
{1, 2, 3, 4, 5, 'b', 'a', 'c'}

        ②删除remove和discard

>>> s1
{1, 2, 3, 4, 5, 'b', 'a', 'c'}
>>> s1.remove("a")
>>> s1
{1, 2, 3, 4, 5, 'b', 'c'}
>>> s1.discard(1)
>>> s1
{2, 3, 4, 5, 'b', 'c'}

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值