Python中的六种基本数据类型

这篇具有很好参考价值的文章主要介绍了Python中的六种基本数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python中分为六种基本数据类型

  • 不可变类型(又叫静态数据类型,没有增删改操作):数字(number)、字符串(string)、元组(tuple)
  • 可变类型(又叫动态数据类型,支持增删改操作):列表(list)、字典(dictionary)、集合(set)

1. 数字类型(numbers):

数字类型下还可分为整数(int)、浮点数(float)、复数(complex)、布尔(bool)

age = 22        # 整数型,可以通过print(sys.maxsize)查看最大取值范围
print(age)      # 输出:22

weight = 116.65 # 浮点型
print(weight)   # 输出:116.65

c1 = 1 + 2j
c2 = 2 + 3j
print(c1+c2)    # 输出:(3+5j),复数在实际工作中几乎用不到,请自行了解
print(complex(2,1)) # 输出:(2+1j)


print(True == 1)  # 输出:True
print(False == 0) # 输出:True
# True==1,False==0 ,因此True 和 False 可以和数字相加
print(True + 1)   # 输出:2
print(False - 2)  # 输出:-2

# ↓其实布尔型就是整数型的子类,可以使用内置函数issubclass()判断,该函数是用于判断一个类型对象是否是另一个类型对象的子类
print(issubclass(bool, int)) # 输出:True

2. 字符串类型(string)

字符串必须使用''""括起来,对于特殊字符可以使用反斜杠\进行转义,用+拼接多个字符串, 用*复制字符串,字符串还支持索引截取(又叫切片)

name = "ZhangSan"   # 字符串型,也可以使用单括号
print(name)         # 输出:ZhangSan
print(name * 2)    # 输出字符串两次,也可以写成 print (2 * name),输出:ZhangSanZhangSan
print(name +'-123')# 拼接字符串,输出:ZhangSan-123
print(name +'\'123\'')# 拼接字符串并将单引号转义,输出:ZhangSan'123'

print(name[0:-1])  # 输出第一个至倒数第二个的字符,截取时顾头不顾尾,输出:ZhangSa
print(name[0])     # 输出第一个字符,输出:Z
print(name[-1])    # 输出最后一个字符,输出:n
print(name[2:])    # 输出从第三个开始之后的所有字符,输出:angSan
print(name[0:-1:2]) # 输出第一个至倒数第二个的字符,步长为2,输出:Zaga
print(name[8])		# 若字符不存在,则会抛出IndexError: string index out of range

3. 列表(list)

列表是一组可重复且有序的数据集合,任何类型的数据都可以存到列表中,会根据需要动态分配和回收内存,是Python中使用最频繁的数据类型,列表同样也支持索引截取(又叫切片),列表中的元素是可变的,能够进行增删改操作

  • 列表创建

    l0 = []	# 创建空列表
    l1 = ["张三",'lisi',12,["22","lisi","王武"],"赵柳"]  # 直接使用中括号创建列表
    l2 = list(['lisi',12,("22","王武"),"赵柳"])  		# 或者调用内置函数list(),通常用于转换为列表时使用
    
  • 获取列表中的元素

    print(l1[1])        # 获取列表l1中第二个元素,输出:lisi
    print(l1[0:2])      # 获取列表l1中第一个和第二个元素,输出:['张三', 'lisi']
    print(l1[-5:-2])    # 获取列表l1中第一个至倒数第三个数据,反向索引,输出:['张三', 'lisi', 12]
    print(l1[2:-1])     # 获取列表l1中第三个至倒数第二个元素,输出:[12, ['22', 'lisi', '王武']]
    print(l1[1::2])     # 获取列表l1中第二个至最后一个元素,步长为2,输出:['lisi', ['22', 'lisi', '王武']]
    print(l1[:1:-2])    # 反向获取列表l1中元素,步长为-2,输出:['赵柳', 12]
    print(l1[::-1])     # 步长为-1时表示倒序排列元素,输出:['赵柳', ['22', 'lisi', '王武'], 12, 'lisi', '张三']
    print(l1[3][0])     # 获取l1嵌套列表(即第四个元素)中的第一个元素,输出:22
    print(l1[3][-1])    # 获取l1嵌套列表(即第四个元素)中的最后一个元素,输出:王武
    print(l1[5])		# 若元素不存在,则会抛出IndexError: list index out of range
    
    for i in l1:		# 使用for循环遍历列表中的元素
        print(i)		# 遍历元素后的操作,比如输出结果
    
  • 判断元素是否在列表中

    print("lisi" in l1)     # 判断l1列表中包含“lisi”,输出:True
    print("赵柳" not in l1)  # 判断l1列表中不包含“赵柳”,输出:False
    print("22" in l1[3])    # 判断l1嵌套列表中包含“22”,输出:True
    print("王武" not in l1)  # 判断l1列表中不包含“王武”,输出:True
    
  • 列表排序

    li = [22,18,9,-2,0,6]	# 对于需要排序的列表,元素类型必须一致,比如:元素统一为数字类型或字符串类型
    li.sort()				# 调用sort()方法,默认从小到大排序
    li.sort(reverse=True)	# 指定reverse=True后列表会进行降序排列
    # ↓还可以调用内置函数sorted()进行排序,此方式不会改变原列表
    sorted(li)				# 从小到大排序
    sorted(li,reverse=True)	# 同样指定reverse=True后列表会进行降序排列
    
  • 修改列表中的元素

    l1[1]="李思"			   # 将l1列表中第二个元素改为李思
    l1[3][0] = 22			# l1嵌套列表中的第一个元素改为22
    l1[1:3]= ["张珊","李思"]  # 将l1列表中第二个和第三个值改为张珊和李思
    
  • 列表中添加元素

    l3 = [1,2]
    l4 = ["壹","er"]
    l3.append(3)		# 在l3列表末尾添加元素3,输出:[1, 2, 3]
    l3.append(l4)		# 将l4列表添加到l3列表末尾,输出:[1, 2, ['壹', 'er']]
    l3.extend("3L")		# 在l3列表末尾至少添加两个元素,输出:[1, 2, '3', 'L']
    l3.extend(l4)		# 将l4列表添加到l3列表末尾,等同于l3+l4,输出:[1, 2, '壹', 'er']
    l3.insert(1,"张珊")  # 在l3列表中索引为1的位置插入元素,输出:[1, '张珊', 2]
    l3.insert(0,l4)		# 将l4列表添加到l3列表头部,输出:[['壹', 'er'], 1, 2]
    

    注意三者的区别:

    • append():指在列表的末尾添加一个元素,新元素会视为一个整体追加到列表末尾
    • extend():指在列表的末尾至少添加一个元素,新元素会将整体中的每个元素一个一个地追加列表末尾
    • insert():指在列表的指定索引位置添加元素
  • 删除列表中的元素

    l1.remove("张珊")		# 删除指定元素,一次只能删除一个元素,若出现重复元素则只删除第一个
    l1.remove("菡菡")		# 若元素不存在,则抛出ValueError: list.remove(x): x not in list
    l1.pop(1)			# 删除指定索引位置上的元素,若不指定索引则默认删除最后一个元素
    l1.pop(8)			# 若索引不存在,则抛出IndexError: pop index out of range
    l1.clear()			# 清空l1列表
    del l1				# 删除l1列表
    

4. 元组(tuple)

元组也是一组可重复且有序的对象集合,任何类型的数据都可以存到元组中,但是元组中的元素是不可变的,元组同样也支持索引截取(又叫切片)

  • 创建元组

    t0 = ()		# 创建空元组
    t1 = ("张珊","lisi",["李思",12,"Python"],("王武","22"))	# 直接使用小括号创建元组
    t2 = (1,)						# 当元组只有一个元素时需要在后面加上逗号
    t3 = tuple(("依儿",22,"Java"))   # 或者调用内置函数tuple(),通常用于转换为元组时使用
    
  • 获取元组中的元素

    print(t1[1])        # 获取元组t1中第二个元素,输出:lisi
    print(t1[0:2])      # 获取元组t1中第一个和第二个元素,输出:('张珊', 'lisi')
    print(t1[2:-1])     # 获取元组t1中第三个至倒数第二个元素,输出:(['李思', 12, 'Python'],)
    print(t1[1::2])     # 获取元组t1中第二个至最后一个元素,步长为2,输出:('lisi', ('王武', '22'))
    print(t1[::-1])     # 步长为-1时表示倒序排列,输出:(('王武', '22'), ['李思', 12, 'Python'], 'lisi', '张珊')
    print(t1[2][0:-1]) 	# 获取元组t1中第三个元素中的第一个至倒数第二个元素,输出:['李思', 12]
    
    for i in t1:		# 使用for循环遍历元组中的元素
        print(i)		# 遍历元素后的操作,比如输出结果
    
  • 修改元组中的可变对象

    # 修改元组t1中列表中的元素
    t1[2][1] = "十"		   # 将12改为10
    t1[2].remove("Python")  # 删除Python元素
    t1[2].pop()				# 删除最后一个元素
    t1[2].clear()			# 清空列表
    t1[2].append("啊哈")	   # 添加一个元素
    # 拼接元组
    print(t2+t3)			# 输出:('1', '依儿', 22, 'Java')
    

    注意:元组中存储的是对象的引用,若对象本身不可变则不可再引用其它对象(比如元组t2和t3,元素都是不可修改的),若对象本身可变则可变对象的引用不可改变,但是对象中的数据可以改变(比如t1中的列表,该列表不可删除,但可以修改列表中的元素)

5. 字典(dictionary)

字典是一组可变的无序的对象集合,字典中的元素是通过键(Key) : 值(Value)来保存的,一组键值对称为一个元素,其中键(Key)不可重复,必须唯一,而值(Value)是可重复的,字典会浪费较大内存,是一种使用空间换时间的数据类型

  • 创建字典

    d0 = {}		# 创建空字典
    d1 = {"张珊":100,"李思":120,"王武":110}	# 使用花括号创建字典
    d2 = dict(name="李尔",weight=116)		   # 调用内置函数dict()创建,通常用于转换为字典时使用
    
  • 获取字典中的元素

    print(d1["李思"])			# 使用中括号根据Key获取Value值,输出:120
    print(d1["张三"])			# 若Key不存在,则抛出KeyError: '张三'
    
    # ↓还可以使用get()方法取值,此方式若Key不存在则返回None,不会抛出KeyError异常,还可以设置默认Value
    print(d1.get("张珊"))		# 使用get()方法取值,输出:100
    print(d1.get("王武",98))	# 若对应Key不存在则输出默认值,否则输出对应的Value值,此处输出:110
    
    # ↓使用keys()方法获取所有Key
    print(d1.keys())		 # 获取字典中所有的Key,输出:dict_keys(['张珊', '李思', '王武'])
    print(list(d1.keys()))	 # 获取字典中所有的Key并转为列表,输出:['张珊', '李思', '王武']
    print(tuple(d1.keys()))	 # 获取字典中所有的Key并转为元组,输出:('张珊', '李思', '王武')
    
    # ↓使用values()方法获取所有Value值
    print(d1.values())		 # 获取字典中所有的Value值,输出:dict_values([100, 120, 110])
    print(list(d1.values())) # 获取字典中所有的Value值并转为列表,输出:[100, 120, 110]
    print(tuple(d1.values()))# 获取字典中所有的Value值并转为元组,输出:(100, 120, 110)
    
    # ↓使用items()方法获取所有的键值对
    print(d1.items())		 # 获取字典中所有的Key:Value,输出:dict_items([('张珊', 100), ('李思', 120), ('王武', 110)])
    print(list(d1.items()))	 # 获取字典中所有的Key:Value并转为列表,输出:[('张珊', 100), ('李思', 120), ('王武', 110)]
    print(tuple(d1.items())) # 获取字典中所有的Key:Value并转为元组,输出:(('张珊', 100), ('李思', 120), ('王武', 110))
    
    for item in d1:			 # 使用for循环遍历字典中的元素
        print(item)			 # 返回字典中所有的Key
    
  • 判断字典中是否存在指定的Key

    print("李思" in d1)		# 判断d1字典中存在Key"李思",输出:True
    print("王武" not in d1)	# 判断d1字典中不存在Key"王武",输出:False
    
  • 字典中元素的增删改

    d1["李思"] = 118		# 若Key存在,则修改对应的Value值,原李思对应的value值变为118
    d1["张三"] = 106		# 若Key不存在,则新增键值对,字典中新增'张三': 106
    d1.pop("张三")		# 删除Key为“张三”的键值对
    d1.pop("张凤")		# 必须传入一个Key,若Key不存在,则抛出KeyError: '张凤'
    del d1["张三"]		# 同样也是删除Key为“张三”的键值对
    d1.clear()			 # 清空字典
    del d1				 # 删除字典
    

6. 集合(set)

集合是一组可变的、无序的且不可重复的元素序列,可以理解为是没有Value值得字典,基本功能是测试元素之间的关系和删除重复元素,比如:共同好友、你可能认识的人、关注TA的人还关注了…等

  • 创建集合

    s0 = set()						 # 创建空集合,不能直接使用花括号,花括号默认是创建字典
    s1 = {"李思","张珊","李思","王武"}	# 花括号中元素非键值对时,创建的是集合
    s2 = set("李尔")					# 调用内部函数set()创建,通常用于转换为集合时使用
    
  • 获取集合中的元素

    # ↓若集合中存在相同的元素,只会出现输出一个,因为集合是无序的,所以每次输出结果顺序可能不一致
    print(s1)		# 获取集合s1中所有的元素,输出:{'李思', '王武', '张珊'} 
    for i in s1:	# 通过for循环获取集合中的元素
        print(i)	# 同样重复元素只返回一个
    # ↓集合中的某一个元素是不能直接获取的,可以先转换为列表,然后使用列表方式获取元素
    ls = list(s1)	# 将集合s1转换为列表
    print(ls[1])    # 获取列表l1中第二个元素,输出:李思
    print(ls[0:2])  # 获取列表l1中第一个和第二个元素,输出:['王武', '李思']
    ……
    
  • 判断元素是否存在

    print("李思" in s1)		# 判断s1集合中存在"李思",输出:True
    print("王武" not in s1)	# 判断s1集合中不存在"王武",输出:False
    
  • 集合中添加、更新元素

    s1.add("赵柳")		# 添加一个元素,因为集合是无序的,所以元素位置随机
    # update也可以理解为新增,当存在相同元素时,相同元素会被覆盖,不同元素会新增到集合中
    s1.update("张三")		# 集合中会添加两个元素,‘张’、‘三’
    s1.update("张三丰")   # 集合中会更新两个元素,‘张’和‘三’,新增一个元素‘丰’
    
  • 删除集合中的元素

    s1.remove("李思")		# 删除s1集合中的元素“李思”,若元素不存在,则抛出KeyError: '李思'
    s1.discard("张三")	# 删除s1集合中的元素“张三”,若元素不存在,不会抛出任何异常
    s1.pop()			# 随机删除任意一个元素
    s1.clear()			# 清空集合中的元素
    del s1				# 删除集合
    
  • 判断两个集合是否相等

    print(s1 == s2)		# 输出:False
    print(s1 != s2)		# 输出:True
    
  • 判断两个集合的关系文章来源地址https://www.toymoban.com/news/detail-444631.html

    s3 = {"李思","张珊","李思","王武","Andy"}
    s4 = {"李四","张珊","张三","王武"}
    s5 = {"Andy"}
    
    # ↓当s5中所有的元素s3里都有,但s5中的元素s3中未必有,则s3就是s5的超级,反之s5就是s3子集
    print(s3.issuperset(s5))	# 判断s3是否是s5的超集,输出:True,因为s3中有s5所有的元素
    print(s5.issubset(s3))		# 判断s5是否是s3的子集,输出:True,因为s5中的所有元素s3中都有
    print(s3.isdisjoint(s4))	# 判断s3和s4两个集合是否没有交集,输出:False,因为两个集合中都有"张珊"和"王武",存在交集
    
    print(s3.intersection(s4))	# 输出s3和s4交集(即二者都有)的元素,输出:{'张珊', '王武'}
    print(s3 & s4)				# 与intersection()等价,交集的一种符号表示法
    
    print(s3.union(s4))			# 输出s3和s4并集(即去掉二者都有)的元素,输出:{'李思', '张三', '王武', '李四', '张珊', 'Andy'}
    print(s3 | s4)				# 与union()等价,并集的一种符号表示法
    
    print(s3.difference(s4))	# 输出s3和s4差集(即所有属于s3但不属于s4)的元素,输出:{'Andy', '李思'}
    print(s3 - s4)				# 与union()等价,差集的一种符号表示法
    
    print(s3.symmetric_difference(s4))	# 输出s3和s4对称差集(即s3中不属于s4和s4中不属于s3)的元素,输出:{'Andy', '李思', '李四', '张三'}
    print(s3 ^ s4)				# 与symmetric_difference()等价,对称差集的一种符号表示法
    

到了这里,关于Python中的六种基本数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务限流的六种方式

    服务限流,是指通过控制请求的速率或次数来达到保护服务的目的,在微服务中,我们通常会将它和熔断、降级搭配在一起使用,来避免瞬时的大量请求对系统造成负荷,来达到保护服务平稳运行的目的。下面就来看一看常见的6种限流方式,以及它们的实现与使用。 固定窗

    2024年02月10日
    浏览(33)
  • 关于Bean的六种作用域

    在JavaSE中,我们学习过了全局变量以及局部变量,这里就涉及到了作用域问题,那么什么是作用域呢? 限定程序中变量的使用范围叫做作用域,或者说在源代码中定义变量的某个区域就叫做作用域。 而Bean的作用域指的是 Bean在Spring整个框架中的某种行为模式 , 比如singleto

    2024年02月08日
    浏览(51)
  • 【SpringMVC]获取参数的六种方式

    目录 1.通过ServletAPI获取 2.通过控制器方法的形参获取 3.@RequestParam:将请求参数和控制器方法的形参绑定 4.@RequestHeader:将请求头信息与控制器方法的形参的值进行绑定 5. CookieValue:将cookie数据和控制器方法的形参绑定 Cookie: ​编辑 6.通过控制器方法的实体类类型的形参获取

    2024年02月09日
    浏览(53)
  • SpringBoot 实现跨域的六种方式

    目录 1.通过SpringSecurity方式配置 2.使用Spring提供的CorsFilter注入Bean(推荐) 3.使用注解@CrossOrigin注解(繁琐) 4.通过ResponseBodyAdvice 实现跨域 5.通过HttpServletResponse设置跨域 6.通过WebMvcConfigurer 实现跨域 与第5类似

    2024年02月14日
    浏览(48)
  • 斐波那契数列的六种解法

    做这个问题之前,我们需要了解到斐波那契数列是什么东西?是干什么的? 斐波那契数列是什么? 一、斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 这个数列从第三项开始,每一项都等于前两项之和。 二、应用:通常在个别股票中不是太准确,通常在指数上

    2024年02月08日
    浏览(54)
  • uniapp路由跳转的六种方式

    uniapp官方文档详解: 一、uni.navigateTo保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。 注意: 页面跳转路径有层级限制,不能无限制跳转新页面 跳转到 tabBar 页面只能使用 switchTab 跳转 二、uni.redirectTo关闭当前页面,跳转到应用内的某个页面。

    2024年02月11日
    浏览(45)
  • bitmap的六种压缩方式,Android图片压缩

    Android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式: 图片长度 x 图片宽度 x 一个像素点占用的字节数 以下是图片的压缩格式: 其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。 ALPHA_8 表示

    2024年02月09日
    浏览(50)
  • 最常见的六种跨域解决方案

    前言:什么是跨域? JSONP CORS 搭建Node代理服务器 Nginx反向代理 postMessage Websocket 总结 跨域就是当在页面上发送ajax请求时, 由于浏览器同源策略的限制,要求当前页面和服务端必须同源,也就是协议、域名和端口号必须一致 。 如果协议、域名和端口号中有其中一个不一致,

    2024年01月25日
    浏览(50)
  • vue组件间传值的六种方法

    父组件代码: 子组件代码: 页面显示: 子组件代码: 父组件代码: 页面显示: 父子组件传值原理:父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示: ref:如果在普通的 DOM 元素

    2024年02月15日
    浏览(50)
  • C语言实现排序算法的六种方式

    1、冒泡法 2、交换法 每次用当前的元素一一的同其后的元素 3、选择法 从数据中选择最小的同第一个值交换,在从剩下的部分中选择最小的与第二个交换,这样往复下去 4、插入法 在前面的数中寻找相应的位置插入, 然后继续下一张 插入排序就是每一步都将一个待排数据按

    2024年01月25日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包