当前位置: 首页 > news >正文

python基础—python6种基本数据类型及数据类型之间转换

文章目录

  • 一、python标准数据类型
    • (一)数字类型
      • 整型:int
      • 浮点型:flaot
      • 布尔型:bool
      • 复数类型:complex
    • (二)字符串
    • (三)列表类型
    • (四)元组类型
    • (五)字典类型
    • (六)集合类型
  • 二、python数据类型转换
    • (一)自动类型转换
    • (二)强制类型转换
      • 其他类型 -> str
      • 其他类型 -> 数字型(bool/float/int/complex)
      • 其他类型 -> list
      • 其他类型 -> tuple
      • 其他类型 -> dict
      • 其他类型 -> set


一、python标准数据类型

(一)数字类型

整型:int

1)在数字中,正整数、0、负整数都称为整型。

举例1:

intvar1=100
print(type(intvar1))

运行结果:

<class ‘int’>

2)二进制整型

也可以用二进制表示整型,print自动转换为十进制。

举例1:

intvar2=0b1010
print(intvar2)
print(type(intvar2))

运行结果:

10
<class ‘int’>

浮点型:flaot

1)含有小数点的数据都是浮点型。

举例1:

floatvar1=3.14
print(floatvar1,type(floatvar1))

运行结果:

3.14 <class ‘float’>

2)科学计数法

举例1:

floatvar2 = 3.456e5 #小数点向右移动5位
print(floatvar2,type(floatvar2))

运行结果:

345600.0 <class ‘float’>

布尔型:bool

布尔型数据只有两种:True、False。表示真假。

举例1:

boolvar1 = True
print (boolvar1,type(boolvar1))

运行结果:

True <class ‘bool’>

复数类型:complex

复数为实数加虚数,只要存在虚数,此数据类型就为复数类型。

表达方法1:

complexvar1 = 3-91j
print (complexvar1,type(complexvar1))

运行结果:

(3-91j) <class ‘complex’>

表达方法2:
语法:complex(实数,虚数)

complexvar2 = complex(3,-91)
print (complexvar2,type(complexvar2))

运行结果:

(3-91j) <class ‘complex’>

(二)字符串

1)字符串:str
用引号引起来的就是字符串。
可用:单引号、双引号、三引号

举例1:

strvar1 = 'abc'
strvar2 = "abc,文字"
strvar3 = """
转义字符:\ + 字符(1)把无意义的字符变的有意义(2)把有意义的字符变的无意义
\\n:换行
\\r\\n:换行
\\t:缩进(tab,水平制表符)
\\r:把\\r后面的字符串直接拉到当前行行首
"""print (strvar1,type(strvar1))
print (strvar2,type(strvar2))
print (strvar3,type(strvar3))

运行结果:
在这里插入图片描述

2)元字符串 r+字符串==>表示不转字符,原型化输入字符串。(相当于字符串中给所有特殊意义的字符加了转义符)

举例1:

strvar1=r"C:\Users"
print(strvar1)

运行结果:

C:\Users

(三)列表类型

1)列表:list

1.1)列表创建

  • 一维列表的创建,使用[]可以创建一个列表对象,列表可是一种有序的集合,可以随时添加和删除其中的元素。

举例1:

#创建一个空列表
list1=[]
#定义一个普通列表
list2=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]print("list2的元素是",list2,"\n显示该函数数据结构类型",type(list2))

运行结果:

list2的元素是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
显示该函数数据结构类型 <class ‘list’>

  • 多维列表的创建。尽管 list默认是一维的,在实际应用中我们可以根据需要创建多维列表。多维列表的创建可以使用[]嵌套。

举例1:

lists=[[1,2],['a','b']]
print("多维列表:",lists,"\n显示该函数数据结构类型",type(list2))

运行结果:

多维列表: [[1, 2], [‘a’, ‘b’]]
显示该函数数据结构类型 <class ‘list’>

1.2)列表查询

  • 正向索引下标:
    列表元素从左到右依次为:0、1、2、3……

  • 逆向索引下标
    列表元素从右向左依次为:-1、-2、-3、-4、-5……

举例1:

list2=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]print("\n列表切分",list2[1:8],"\n固定步长访问",list2[::2],"\n从后往前访问",list2[-3])

运行结果:

列表切分 [2, 3, 4, 5, 6, 7, 8]
固定步长访问 [1, 3, 5, 7, 9, 11, 13, 15]
从后往前访问 13

举例2:当列表很长的时,要获取列表中最后一个元素,一种方法是使用逆向索引下标,另一种方法是使用len函数获取容器类型数据总长度。

list2=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print("取列表中最后一个元素",list2[len(list2)-1])

运行结果:

取列表中最后一个元素 15

1.3)列表元素增加

  • 列表的增加,append()可以在列表末尾增加新的项目,可以增加一个元素,也可以增加一个list对从成为多维列表。

举例1:

#增加一个元素
list1=[1,2,3,4,5,6]
list1.append(11)
print("增加元素后的列表",list1)#增加一个list
lists=[[1,2],['a','b']]
lists.append(["hello",5])
print("增加列表后的列表",lists)

运行结果:

增加元素后的列表 [1, 2, 3, 4, 5, 6, 11]
增加列表后的列表 [[1, 2], [‘a’, ‘b’],[‘hello’, 5]]

1.4)列表元素删除

  • 列表的删除,remove()函数可以删除指定值的元素,list.remove()会删除list对象中值为i元素,若不存在这个元素则报错;pop()函数可以删除指定下标的元组,默认为列表对象最后一个元素,list.pop(i)则删除下标为i的元素。

举例1:

#删除list1列表中的元素5
list1=[1,2,3,4,5,6]
list1.remove(5)#删除lists列表对象的最后一个元素
lists=[[1,2],['a','b']]
lists.pop()print("删除指定下标元素后的列表对象",list1,"\n删除最后一个元素的列表对象",lists)

运行结果:

删除指定下标元素后的列表对象 [1, 2, 3, 4, 6]
删除最后一个元素的列表对象 [[1, 2]]

1.5)列表元素修改

  • 列表修改,list[i]=x可以直接替换列表指定下标的元素。

举例1:

list1=[1,2,3,4,5,6]
list1[1]=100
print("修改后的列表为",list1)

运行结果:

修改后的列表为 [1, 100, 3, 4, 5, 6]

1.6)列表相关函数

  • reverse() 函数可以使列表倒置。
  • len() 函数可以返回列表的元素个数。
  • sort() 函数可以使列表元素升序排列。

举例1:

list1=[1,2,3,4,5,6]
list1.reverse()
print("倒置后的列表是",list1)list1.sort()
print("len统计列表元素的个数",len(list1),"\nsort列表升序排列",list1)

运行结果:

倒置后的列表是 [6, 5, 4, 3, 2, 1]
len统计列表元素的个数 6
sort列表升序排列 None

(四)元组类型

1)元组:tuple

1.1)元组创建

  • 创建元组对象,元组一旦创建就无法对其元素进行增加,删除和修改
  • 可以使用()创建元组,元组可以为空且元素类型可以不同。但若元组中仅包含一个数字,则应该添加逗号以区别数字类型。

举例1:

tup1=('google','runoob',1997,2000)
tup2=(2,)
tup3="a","b","c","d"
tup4=()
print('tup1的元素是',tup1,'\n显示该数据结构类型',type(tup1),'\ntup2的元素是',tup2,'\n显示该数据结构类型',type(tup2),'\ntup3的元素是',tup3,'\n显示该数据结构类型',type(tup3),'\ntup4的元素是',tup4,'\n显示该数据结构类型',type(tup4))

运行结果:

tup1的元素是 (‘google’, ‘runoob’, 1997, 2000)
显示该数据结构类型 <class ‘tuple’>
tup2的元素是 (2,)
显示该数据结构类型 <class ‘tuple’>
tup3的元素是 (‘a’, ‘b’, ‘c’, ‘d’)
显示该数据结构类型 <class ‘tuple’>
tup4的元素是 ()
显示该数据结构类型 <class ‘tuple’>

1.2)元组查询

访问元组可以使用下标索引来访问元组中的值

  • 正向索引下标:
    从左到右依次为:0、1、2、3……

  • 逆向索引下标
    从右向左依次为:-1、-2、-3、-4、-5……

举例1:

tup1=('google','runoob',1997,2000)print("元组切分",tup1[1:4],"\n从前往后访问",tup1[0],"\n从后往前访问",tup1[-3])

运行结果:

元组切分 (‘runoob’, 1997, 2000)
从前往后访问 google
从后往前访问 runoob

1.3)元组删除

  • 删除元组,使用del方法可以都删除指定的元组对象,相对的我们无法删除指定下标的元组元素。

举例1:

tup1=('google','runoob',1997,2000)
del tup1[0] #报错

运行结果:
在这里插入图片描述
举例2:

del tup1
print("删除后的元组 tup:")
print(tup1)

运行结果:
在这里插入图片描述

1.4)元组连接与复制

  • 元组连接和复制。虽然元组中的元素值 是不允许修改的,但我们可以对元组进行连接组合,并且会返回一个新的元组对象。
  • 使用+进行操作连接
  • 使用*进行复制操作

举例1:

tup1=('google','runoob',1997,2000)
tup2=(2,3)
tup3=tup1+tup2
print("使用+进行操作连接",tup3)tup4=tup2*3
print("使用*进行复制操作",tup4)

运行结果:

使用+进行操作连接 (‘google’, ‘runoob’, 1997, 2000, 2, 3)
使用*进行复制操作 (2, 3, 2, 3, 2, 3)

1.5)元组相关函数

  • len() 函数可以返回元组元素的个数。
  • max() 函数可以返回元组中的最大元素。
  • min() 函数可以返回元组中的最小元素

举例1:

tup1=('google','runoob',1997,2000)
tup2=(2,3,33,55,100)
print("计算元组的元素个数",len(tup1),"\n求元组的最大元素",max(tup2),"\n求元组的最小元素",min(tup2))

运行结果:

计算元组的元素个数 4
求元组的最大元素 100
求元组的最小元素 2

(五)字典类型

1)字典:dict

1.1)字典创建

  • 方法一:{键1:值1,键2:值2,键3:值3……}常规创建字典,键具有唯一性。
  • 方法二:使用zip方法创建字典。

举例1:生成一个空字典和一个普通字典。

dict1={"id":"l100","name":"cooc"}
dict2={}
print("显示该数据结构类型",type(dict1))

运行结果:

显示该数据结构类型 <class ‘dict’>

举例2:zip()方法可以返回元组组成的列表,这可以帮助我们快速构建字典。

demo_dict=dict(zip("abc","123"))
print("显示字典数据形式",demo_dict,
"\n显示该数据结构类型",type(demo_dict))

运行结果:

显示字典数据形式 {‘a’: ‘1’, ‘b’: ‘2’, ‘c’: ‘3’}
显示该数据结构类型 <class ‘dict’>

1.2)字典查询

  • 方法一:通过键获取值。
  • 方法二:使用get(key,default=None)方法获取指定键的值。

举例1:

dict1={"id":"l100","name":"cooc"}
#查找id键的值
print("常规查询:",dict1["id"])
print("根据键查询:",dict1.get("id"))

运行结果:

常规查询: l100
根据键查询: l100

1.3)字典增加

  • 方法:字典名[键]=值
  • 增加列,其实就是增加字典中一个键值对

举例1:

dict1={"id":"l100","name":"cooc"}
dict1["school"]="school1"
print("增加一个键值对:",dict1)

运行结果:

增加一个键值对: {‘id’: ‘l100’, ‘name’: ‘cooc’, ‘school’: ‘school1’}

1.4)字典删除

  • 方法一:del 字典名[键值],删除字典中一个键值对。
  • 方法二:字典名.pop[键值],删除字典中一个键值对。

举例1:

dict1={"id":"l100","name":"cooc"}
del dict1[id]
print("删除id键后字典:",dict1)dict1={"id":"l100","name":"cooc"}
dict1.pop('id')
print("删除id键后字典:",dict1)

运行结果:

{‘name’: ‘cooc’}

1.5)字典修改

  • 方法一:字典名[键]=值
  • 方法二:字典名.update({键:值})

举例1:

dict1={"id":"l100","name":"cooc"}
dict1["id"]="001"
print("修改id键对应的值后的dict1:",dict1)dict1={"id":"l100","name":"cooc"}
dict1.update({"name":"lily"})
print("修改name对应的值后的后dict1:",dict1)

运行结果:

修改id键对应的值后的dict1: {‘id’: ‘001’, ‘name’: ‘cooc’}
修改name对应的值后的后dict1: {‘id’: ‘l100’, ‘name’: ‘lily’}

(六)集合类型

1)集合:set

1.1)集合创建

-集合的创建,集合是数学概念上集合,不会出现重复值,所有的元素按照一定顺序排列,若元素为数字则按照数字大小排列。使用set()函数创建集合会自动地拆分多个字母组成的字符串。

举例1:

mySet1=set("abcgefa12312123")
mySet2={"大","小","点","多"}
mySet3=set(("hello","world"))
print("集合1",mySet1,"\n显示该数据结构类型",type(mySet1),"\n集合2",mySet2,"\n集合3",mySet3)

运行结果:

集合1 {‘g’, ‘3’, ‘b’, ‘2’, ‘f’, ‘a’, ‘1’, ‘e’, ‘c’}
显示该数据结构类型 <class ‘set’>
集合2 {‘小’, ‘点’, ‘多’, ‘大’}
集合3 {‘hello’, ‘world’}

1.2)集合查询

  • 不可以获取集合的元素,但是可以使用in判断这个元素是否在集合中,若存在为真,反之为假。

举例1:

mySet={"a","b","c","d","e","f"}
"a" in mySet

运行结果:

True

1.3)集合元素增加

  • 方法一:add()函数可以在集合对象中加入新元素,但若元素已经存在,则无效果。
  • 方法二:update表示添加(并非修改),是一个一个添加,并且按照顺序添加进集合。

举例1:

mySet={"a","b","c","d","e","f"}
mySet.add("ghk")
mySet.add("a")
print("add()后的集合",mySet)mySet.update("tyu")
print("update()后的集合",mySet)

运行结果:

add()后的集合 {‘d’, ‘b’, ‘f’, ‘a’, ‘ghk’, ‘e’, ‘c’}
update()后的集合 {‘d’, ‘b’, ‘t’, ‘f’, ‘a’, ‘ghk’, ‘e’, ‘u’, ‘y’, ‘c’}

1.4)集合元素删除

  • remove() 函数可以将集合中的元素删除。
  • discard() 函数可以删除集合中指定元素,且元素不存在不报错。
  • pop() 函数可以随机删除集合中的一个元素(默认删除最后一个元素)
  • clear() 函数可以清空集合。

举例1:

mySet={"a","b","c","d","e","f"}
mySet.remove("a")
print("删除指定元素后的集合",mySet)mySet.discard("x")
print("删除不存在的元素后的集合",mySet)mySet.pop()
print("随机删除元素后的集合",mySet)mySet.clear()
print("删除所有元素后的集合",mySet)

运行结果:

删除指定元素后的集合 {‘d’, ‘b’, ‘f’, ‘e’, ‘c’}
删除不存在的元素后的集合 {‘d’, ‘b’, ‘f’, ‘e’, ‘c’}
随机删除元素后的集合 {‘b’, ‘f’, ‘e’, ‘c’}
删除所有元素后的集合 set()

1.5)集合相关函数

  • len() 函数查询集合的长度
  • copy() 函数复制集合中的元素并生成一个新的集合。
  • 集合的运算。首先建立两个新的集合用于运算。在集合运算中,'-‘表示求差集,’&‘表示求交集,’|‘表示求并集,’^'表示两个集合的并集减去交集。

举例1:

mySet={"a","b","c","d","e","f"}
copy_mySet=mySet.copy()
print("len()返回集合的长度",len(mySet),"\ncopy()生成的集合",copy_mySet)

运行结果:

len()返回集合的长度 6
copy()生成的集合 {‘f’, ‘d’, ‘a’, ‘b’, ‘e’, ‘c’}

举例2:

a=set("apple")
b=set("banana")
print("求差集",a-b,"\n求并集",a|b,"\n求交集",a&b,"\n求非交集",a^b)

运行结果:

求差集 {‘p’, ‘e’, ‘l’}
求并集 {‘p’, ‘a’, ‘l’, ‘n’, ‘e’, ‘b’}
求交集 {‘a’}
求非交集 {‘l’, ‘b’, ‘n’, ‘p’, ‘e’}


二、python数据类型转换

Python中的数据类型转换有两种,一种是自动类型转换,即Python在计算中会自动地将不同类型的数据转换为同类型数据来进行计算;另一种是强制类型转换,即需要我们基于不同的开发需求,强制地将一个数据类型转换为另一个数据类型。

(一)自动类型转换

当两个不同类型的数据进行运算时,结果会像更高精度进行计算,精度等级:布尔<整型<浮点型<算数。

举例1:

a=10
b=True
print(a+b)
'''
在和数字运算时,True转为1,False转为0
'''

运行结果:

11

(二)强制类型转换

函数说明
str( )可以把其他类型数据转化为字符串类型
int( )可以把其他类型数据转化为整型
float( )可以把其他类型数据转化为浮点型
bool( )可以把其他类型数据转化为布尔类型
list( )可以把其他类型数据转化为列表类型
tuple( )可以把其他类型数据转化为元组类型
dict( )可以把其他类型数据转化为字典类型
set( )可以把其他类型数据转化为集合类型

其他类型 -> str

  • int -> str

举例1:

a=123
res=str(a)
print(res,type(res))

输出结果:

123 <class ‘str’>

  • bool -> str

举例1:

a=True
res=str(a)
print(res,type(res))

输出结果:

True <class ‘str’>

  • float -> str
    • float 转换 str 会去除末位为 0 的小数部分。

举例1:

a=1.23
res=str(a)
print(res,type(res))

输出结果:

1.23 <class ‘str’>

  • complex -> str
    • complex 转换 str,会先将值转化为标准的 complex 表达式,然后再转换为字符串。

举例1:

a=3-91j
res=str(a)
print(res,type(res))a=complex(3,-91)
res=str(a)
print(res,type(res))

输出结果:

(3-91j) <class ‘str’>
(3-91j) <class ‘str’>

  • list -> str

举例1:

a=[1, 2, 3]
res=str(a)
print(res,type(res))

输出结果:

[1, 2, 3] <class ‘str’>

  • tuple -> str

举例1:

a=(1, 2, 3)
res=str(a)
print(res,type(res))

输出结果:

(1, 2, 3) <class ‘str’>

  • dict -> str

举例1:

a= {1: 'a', 2: 'b'} 
res=str(a)
print(res,type(res))

输出结果:

{1: ‘a’, 2: ‘b’} <class ‘str’>

  • set -> str

举例1:

a={1, 2, 3}
res=str(a)
print(res,type(res))

输出结果:

{1, 2, 3} <class ‘str’>

总结

  • 所有类型都可以转化成str类型

其他类型 -> 数字型(bool/float/int/complex)


数字类型之间相互转换

  • int -> float/bool/complex
    • int转换成float,会自动给添加一位小数。
    • int转换成bool,0为False,其他为真。
    • int转换成complex,会自动添加虚数部分并以0j表示。

举例1:

a=123
res1=float(a)
res2=bool(a)
res3=complex(a)
print(res1,type(res1),"\n",res2,type(res2),"\n",res3,type(res3))

123.0 <class ‘float’>
True <class ‘bool’>
(123+0j) <class ‘complex’>

  • bool -> int/float/complex
    • bool转换成int,True会转为1,False会转为0。
    • bool转换成float,True会转为1.0,False会转为0.0。
    • bool转换成complex,True实数部分会转为1,False实数部分会转为0,会自动添加虚数部分并以0j表示。

举例1:

b=True
res1=int(b)
res2=float(b)
res3=complex(b)
print(res1,type(res1),"\n",res2,type(res2),"\n",res3,type(res3))

输出结果:

1 <class ‘int’>
1.0 <class ‘float’>
(1+0j) <class ‘complex’>

  • float -> int/bool/complex
    • float转换成int,会去掉小数点及后面的数值,仅保留整数部分。
    • float转换成bool,0为False,其他为True。
    • float转换成complex,会自动添加虚数部分并以0j表示。

举例1:

c=1.23
res1=int(c)
res2=bool(c)
res3=complex(c)
print(res1,type(res1),"\n",res2,type(res2),"\n",res3,type(res3))

输出结果:

1 <class ‘int’>
True <class ‘bool’>
(1.23+0j) <class ‘complex’>

  • complex -> int/float/bool
    • complex不能转换成int,会报错。
    • complex不能转换成float,会报错。
    • complex转换成bool,0为False,其他为True。

举例1:

d=9-3j
res1=int(d)
#res2=float(d) #报错
#res3=bool(d)  #报错
print(res3,type(res3))

输出结果:

True <class ‘bool’>

str-> 数字类型

  • str -> int
    • 如果字符串中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

举例1:

#str
a="123"
res=int(a)
print(res,type(res))

输出结果:

123 <class ‘int’>

  • str -> float
    • 如果字符串含有正负号(+/-)、数字(0-9)和小数点(.)以外的字符,就会报错。

举例1:

a="123"
res=float(a)
print(res,type(res))

输出结果:

123.0 <class ‘float’>

  • str -> bool
    • 0为False,其他为True。

举例1:

a="123"
res=bool(a)
print(res,type(res))

输出结果:

True <class ‘bool’>

  • str -> complex
    • str转换成complex,如果能转换成int或float,则会转换后再转为complex.
    • 如果str完全符合complex表达式规则,也可以转换成complex类型值。
a="123"
res=complex(a)
print(res,type(res))#(123+0j) <class 'complex'>a="1.23"
res=complex(a)
print(res,type(res))
#(1.23+0j) <class 'complex'>a="123.0" 
res=complex(a)
print(res,type(res))
#(123+0j) <class 'complex'>,去掉小数部分a="12+3j"
res=complex(a)
print(res,type(res))
#(12+3j) <class 'complex'>a="12.0+3.0j"
res=complex(a)
print(res,type(res))
#(12+3j) <class 'complex'>,去掉小数部分a="12.0+3.9j"
res=complex(a)
print(res,type(res))
#(12+3.9j) <class 'complex'>

总结:

  • 数字型之间可以相互转换,但complex不支持转换成float、int
  • 只有str字符串类型可以转换为数字型,并且字符串的元素必须为纯数字,如果字符串中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

其他类型 -> list

  • str -> list
    • 字符串转为列表时,会把字符串中的每一个字符当作列表的元素。

举例1:

a='123bcd' 
res=list(a)
print(res, type(res))

输出结果:

[‘1’, ‘2’, ‘3’, ‘b’, ‘c’, ‘d’] <class ‘list’>

  • tuple -> list
    • 元组转为列表时,会把字符串中的每一个字符当作列表的元素。

举例1:

a=(1,2,3)
res=list(a)
print(res, type(res))

输出结果:

[1, 2, 3] <class ‘list’>

  • dict -> list
    • 字典转为列表时,只保留字典的键。

举例1:

a={'name': 'Alice', 'Age': 5, 'Sex': 'Female'} 
res=list(a)
print(res, type(res))

输出结果:

[‘name’, ‘Age’, ‘Sex’] <class ‘list’>

  • set -> list
    • 集合转为列表时,结果是无序的。

举例1:

a={1,2,3,'b','c','d'}
res=list(a)
print(res, type(res))

输出结果:

[1, 2, 3, ‘d’, ‘c’, ‘b’] <class ‘list’>

总结:

  • 数字类型不能转换成为列表
  • 字符串转为列表时,会把字符串中的每一个字符当作列表的元素。
  • 元组转为列表时,会把字符串中的每一个字符当作列表的元素。
  • 字典转为列表时,只保留字典的键。
  • 集合转为列表时,结果是无序的,因为集合本身就是无序的。

其他类型 -> tuple

  • str -> tuple
    • 字符串转为元组时,会把字符串中的每一个字符当作元组的元素。

举例1:

a='123bcd' 
res=tuple(a)
print(res, type(res))

输出结果:

(‘1’, ‘2’, ‘3’, ‘b’, ‘c’, ‘d’) <class ‘tuple’>

  • list -> tuple
    • 列表转为元组时,会把字符串中的每一个字符当作元组的元素。

举例1:

a=[1,2,3]
res=tuple(a)
print(res, type(res))

输出结果:

(1, 2, 3) <class ‘tuple’>

  • dict -> tuple
    • 字典转为元组时,只保留字典的键。

举例1:

a = {'name': 'Alice', 'Age': 5, 'Sex': 'Female'} 
res = tuple(a)
print(res, type(res))

输出结果:

(‘name’, ‘Age’, ‘Sex’) <class ‘tuple’>

  • set -> tuple
    • 集合转为元组时,结果是无序的。

举例1:

a={1,2,3,'b','c','d'}
res=tuple(a)
print(res, type(res))

输出结果:

(1, 2, 3, ‘d’, ‘c’, ‘b’) <class ‘tuple’>

总结:

  • 数字类型不能转换成为元组。
  • 字符串转为元组时,会把字符串中的每一个字符当作元组的元素。
  • 列表转为元组时,会把字符串中的每一个字符当作元组的元素。
  • 字典转为元组时,只保留字典的键。
  • 集合转为元组时,结果是无序的,因为集合本身就是无序的。

其他类型 -> dict

  • list -> dict
    • 嵌套的列表(等长二级列表)转换为字典。
    • 通过zip将2个列表映射为字典。

举例1:

a=[[1, 2], ['a','b']] # 等长二级列表
res=dict(a)
print(res, type(res)) 

输出结果:

{1: 2, ‘a’: ‘b’} <class ‘dict’>

举例2:

tp1=[1,2,3]
tp2=[1,2,3,4]
res=dict(zip(tp1,tp2))
print(res, type(res)) 

输出结果:

{1: 1, 2: 2, 3: 3} <class ‘dict’>

  • tuple -> dict
    • 嵌套的元组(等长二级元组)转换为字典。
    • 通过zip将2个元组映射为字典。

举例1:

a=((1, 2), (3, 4), (5, 6)) # 等长二级元组
res=dict(a)
print(res, type(res))

输出结果:

{1: 2, 3: 4, 5: 6} <class ‘dict’>

举例2:

tp1=(1,2,3)
tp2=(1,2,3,4)
res=dict(zip(tp1,tp2))
print(res, type(res)) 

输出结果:

{1: 1, 2: 2, 3: 3} <class ‘dict’>

总结:

  • 数字类型、字符串、集合不能转换为字典。
  • 列表、元组类型转字典类型,列表必须为等长二级容器,子容器的元素个数必须为2

其他类型 -> set

  • str -> set
    • 先将字符切割成元组,然后再去重转换成集合。

举例1:

a="hello"
res=set(a)
print(res,type(res))

输出结果:

{‘h’, ‘o’, ‘l’, ‘e’} <class ‘set’>

  • list -> set
    • 先对列表去重,再转换。

举例1:

a=[1,2,3,4]
res=set(a)
print(res,type(res))

输出结果:

{1, 2, 3, 4} <class ‘set’>

  • tuple -> set
    • 先对列表去重,再转换。

举例1:

a=(1,2,3,4)
res=set(a)
print(res,type(res))

输出结果:

{1, 2, 3, 4} <class ‘set’>

  • dict -> set
    • 会取字典的键名组合成集合。

举例1:

a={'name': 'Alice', 'Age': 5, 'Sex': 'Female'} 
res=set(a)
print(res,type(res))

输出结果:

{‘Sex’, ‘Age’, ‘name’} <class ‘set’>

总结:

  • 数字类型不转换为集合。
  • 字符串、列表、元组转集合时,结果是无序的。
  • 字典转集合时,只保留字典中的键,结果是无序的。

参考文章:
https://zhuanlan.zhihu.com/p/83086122
https://blog.csdn.net/cheuklam/article/details/120555191

相关文章:

python基础—python6种基本数据类型及数据类型之间转换

文章目录 一、python标准数据类型&#xff08;一&#xff09;数字类型整型&#xff1a;int浮点型&#xff1a;flaot布尔型&#xff1a;bool复数类型&#xff1a;complex &#xff08;二&#xff09;字符串&#xff08;三&#xff09;列表类型&#xff08;四&#xff09;元组类型…...

Axure RP

Axure RP 简介下载安装汉化注册 简介 Axure RP&#xff08;Rapid Prototyping&#xff09;是一款交互式原型设计工具&#xff0c;用于创建高保真的交互式界面原型和线框图。它主要用于用户体验&#xff08;UX&#xff09;和用户界面&#xff08;UI&#xff09;设计&#xff0c…...

java使用ExcelExportUtil.exportBigExcel导出大文件(非分页)

网上看到很多使用这个方法处理的时候&#xff0c;大多使用的分页进行查询&#xff0c;但是当遇到特殊的产品需求&#xff0c;比如A类型数据&#xff0c;多条记录就显示多行&#xff0c;B类型的要求存在多条记录时&#xff0c;就进行汇总后只显示一条&#xff0c;这就导致无法使…...

PlantUML文本绘制类图

记录下文本绘制类图的语法 参考 https://juejin.cn/post/6844903731293585421 类的UML表示 使用UML表示一个类&#xff0c;主要由三部分组成。类名、属性、方法。其中属性和方法的访问修饰符用 - 、# 、 表示 private、protected、public。 如图所示&#xff0c;表示A类有一个…...

5分钟理解NPL算法 之 马尔可夫链 Markov Chain

马尔可夫链&#xff08;Markov Chain&#xff09; 马尔可夫链是一种简单的推理模型。用于描述受当前事件影响下的下一事件发生概率。在预测学科中广泛应用。例如股票预测、文字推理、路线推荐等。 他的核心思路是&#xff1a;假设事件顺序为: X 1 , X 2 , X 3 , . . . . . X…...

C#_GDI+ 绘图编程入门

官网提供相关API GDI 基本图形功能_drawing 高级二维和矢量图形功能_drawing2D GDI 图像处理功能_Imaging GDI 排版功能_text Windows 窗体应用程序提供打印功能_Printing 像素 构成图像的最小单位就是像素&#xff1b;屏幕上显示不管是位图或者矢量图&#xff0c;当描述…...

自己写一个svg转化为安卓xml的工具类

自己写一个svg转化为安卓xml的工具类_张风捷特烈的博客-CSDN博客 svg资源阿里巴巴矢量资源网站:iconfont-阿里巴巴矢量图标库 感觉一般的svg到Android可用的xml差异有点规律&#xff0c;主要的就是path 秉承着能用代码解决的问题&#xff0c;绝对不动手。能够靠智商解决的问题…...

基于随机森林的机器启动识别,基于随机森林的智能家居电器启动识别

目录 背影 摘要 随机森林的基本定义 随机森林实现的步骤 基于随机森林的机器启动识别 代码下载链接: 基于随机森林的家用电器启动识别,基于RF的电器启动识别,基于随机森林的智能家居启动检测-深度学习文档类资源-CSDN文库 https://download.csdn.net/download/abc991835105/…...

Apache Doris 极简运维之BE扩缩容(1)

Apache Doris 极简运维之BE扩缩容&#xff08;1&#xff09; 一、环境信息硬件信息软件信息 二、缩容2.1 DROP BACKEND缩容2.2 DECOMMISSION BACKEND缩容2.2.1 缩容前2.2.2 缩容中2.2.3 缩容后 三、扩容3.1 扩容前3.2 扩容中3.3 扩容后 四、总结 一、环境信息 已部署三个BE节点…...

MySQL每日一练--校园教务系统

一丶数据库名称&#xff1a;SchoolDB 二丶数据库表信息&#xff1a;角色信息表 表名&#xff1a; t_role 主键&#xff1a; r_id 序号 字段名称 字段说明 类别 位数 属性 备注 1 r_id 角色编号 int 主键 自动增长 2 r_name_EN 角色名&#xff08;英…...

9.阿里Sentinel哨兵

1.Sentinel Sentinel&#xff08;哨兵&#xff09;是由阿里开源的一款流量控制和熔断降级框架&#xff0c;用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分&#xff0c;用于保护服务不被异常流量冲垮&#xff0c;从而提高系统的稳定…...

设计模式之工厂方法模式

目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 1.抽象产品 2.具体产品 3.抽象工厂 4.具体工厂 5.调用 总结 抽象工厂模式 简介 结构 实现 区别 工厂方法模式 简介 提供一个用于创建对象的接口(工厂接口)&#xff0c;让其实现类(工厂实现类)决定实例化哪…...

【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下&#xff0c;理解并预测生物种群如何应对气候变化&#xff0c;特别是它们的地理分布如何变化&#xff0c;已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟&#xff0c;不仅可以量化描述物种对环境的需求和适应性&#xff0c;预…...

Moonbeam生态跨链互操作项目汇总

立秋已过&#xff0c;今年的夏天已经接近尾声&#xff0c;即将迎来凉爽的秋天。Moonbeam生态一同以往持续成长&#xff0c;在8月也举办了不少活动、完成集成合作以及协议更新。让我们一同快速了解Moonbeam生态项目近期发生的大小事件吧&#xff01; Moonwell Moonwell是一个建…...

基于社会群体算法优化的BP神经网络(预测应用) - 附代码

基于社会群体算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于社会群体算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.社会群体优化BP神经网络2.1 BP神经网络参数设置2.2 社会群体算法应用 4.测试结果&#xff1a;5…...

208. 实现 Trie (前缀树)

题目描述 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; Trie() 初始化前缀树对…...

adb使用总结

adb连接到模拟器 adb devices 打开模拟器&#xff0c;找到设置。 多次点击版本号&#xff0c;切换到开发者模式 搜索进入开发者选项 开启USB调试 此时在终端输入adb devices就连接上了 使用adb查看安卓手机架构 adb shell getprop ro.product.cpu.abi 进入安卓手机的shell …...

go:正确引入自己编写的包(如何在 Go 中正确引入自己编写的包)

前言 目录如下&#xff1a; 具体教程 1. 工作空间&#xff08;我的是根目录&#xff09;新建 go.work 文件 文件内容如下&#xff1a; go 1.21.0use (./tuchuang./tuchuang/testm ) 2. 添加go.mod文件 1. 包文件夹下 进入testm目录执行 go mod init testModule 2. 引用目…...

cortex-A7核PWM实验--STM32MP157

实验目的&#xff1a;驱动风扇&#xff0c;蜂鸣器&#xff0c;马达进行工作 目录 一&#xff0c;PWM相关概念 有源蜂鸣器和无源蜂鸣器 二&#xff0c;分析电路图&#xff0c;框图 三&#xff0c;分析RCC章节 1&#xff0c;确定总线连接 2&#xff0c;根据总线内容确定基…...

电工-学习电工有哪些好处

学习电工有哪些好处&#xff1f;在哪学习电工&#xff1f; 学习电工有哪些好处&#xff1f;在哪学习电工&#xff1f;学习电工可以做什么&#xff1f;优势有哪些&#xff1f; 学习电工可以做什么&#xff1f;学习电工有哪些好处&#xff1f; 就业去向&#xff1a;可在企业单位…...

Redis内存空间预估与内存优化策略:保障数据安全与性能的架构实践AIGC/AI绘画/chatGPT/SD/MJ

推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享&#xff0c;打开手机app&#xff0c;额外获得1T空间 https://dr…...

Pandas数据分析教程-数据处理

pandas-02-数据清洗&预处理 B. 数据处理1. 重复值处理2. map逐元素转换3. 值替换4. 改变索引值5. 离散化与分箱6. 检测过滤异常值7. 排列与随机采样8. 根据类别生成one-hot向量,向量化文中用S代指Series,用Df代指DataFrame 数据清洗是处理大型复杂情况数据必不可少的步骤…...

php 多维数组排序,根据某一列排序(array_multisort()和array_column()联用)

array_multisort()和array_column()联用效果直接叠满,11>100 先来看下两个函数的介绍和用法 array_column(): 一般模式,不需要其中字段作为id,只需要提取val值 <?php // 可能从数据库中返回数组 $a [[id > 5698, first_name > Peter, last_name > G…...

框架分析(5)-Django

框架分析&#xff08;5&#xff09;-Django 专栏介绍Django核心概念以及组件讲解模型&#xff08;Model&#xff09;视图&#xff08;View&#xff09;模板&#xff08;Template&#xff09;路由&#xff08;URLconf&#xff09;表单&#xff08;Form&#xff09;后台管理&…...

常见前端面试之VUE面试题汇总七

20. 对 vue 设计原则的理解 1.渐进式 JavaScript 框架&#xff1a;与其它大型框架不同的是&#xff0c;Vue 被设计 为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上 手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的…...

空时自适应处理用于机载雷达——空时处理基础知识(Matla代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

磁盘阵列/视频集中存储/安防监控视频智能分析平台新功能:安全帽/反光衣/安全带AI识别详解

人工智能技术已经越来越多地融入到视频监控领域中&#xff0c;近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能&#xff0c;该平台内置多种AI算法&#xff0c;可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍&#xff0c;支持口罩佩戴检…...

23款奔驰GLE450轿跑升级原厂外观暗夜套件,战斗感满满的

升级的方案基本都是替换原来车身部位的镀铬件&#xff0c;可能会有人问&#xff1a;“难道直接用改色膜贴黑不好吗&#xff1f;”如果是贴膜的话&#xff0c;第一个是颜色没有那么纯正&#xff0c;这些镀铬件贴黑的技术难度先抛开不说&#xff0c;即使贴上去了&#xff0c;那过…...

win10系统rust串口通信实现

一、用cargo创建新工程 命令&#xff1a;cargo new comport use std::env; use std::{thread, time}; use serialport::{DataBits, StopBits, Parity, FlowControl}; use std::io::{self, Read, Write}; use std::time::Duration;fn main() -> io::Result<()> {let m…...

新生代与老年代

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存被划分为多个不同的区域&#xff0c;其中包括新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;。 新生代是用于存储新创建的对象的区域。大多数对象在创建后很快就变…...

Microsoft正在将Python引入Excel

Excel和Python这两个世界正在碰撞&#xff0c;这要归功于Microsoft的新集成&#xff0c;以促进数据分析和可视化 Microsoft正在将流行的编程语言Python引入Excel。该功能的公共预览版现已推出&#xff0c;允许Excel用户操作和分析来自Python的数据。 “您可以使用 Python 绘图…...

知识速递(六)|ChIP-seq分析要点集锦

书接上文组学知识速递&#xff08;五&#xff09;|ChIP-seq知多少&#xff1f;&#xff0c;当我们实验完成&#xff0c;拿到下机数据之后&#xff0c;我们最关心的就是&#xff0c;这个数据能不能用&#xff1f;所谓数据能不能用&#xff0c;其实我们会重点关注以下问题&#x…...

【附安装包】EViews 13.0安装教程|计量经济学|数据处理|建模分析

软件下载 软件&#xff1a;EViews版本&#xff1a;13.0语言&#xff1a;英文大小&#xff1a;369.46M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.com…...

Java 语言实现快速排序算法

【引言】 快速排序算法是一种常用且高效的排序算法。它通过选择一个基准元素&#xff0c;并将数组分割成两个子数组&#xff0c;一边存放比基准元素小的元素&#xff0c;另一边存放比基准元素大的元素。然后递归地对这两个子数组进行排序&#xff0c;最终达到整个数组有序的目的…...

Config: Git 环境搭建

...

最新AI系统ChatGPT网站程序源码/搭建教程/支持GPT4.0/Dall-E2绘画/支持MJ以图生图/H5端/自定义训练知识库

一、正文 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01…...

leetcode 392. 判断子序列

2023.8.25 本题要判断子序列&#xff0c;可以使用动态规划来做&#xff0c;定义一个二维dp数组。 接下来就是常规的动态规划求解子序列的过程。 给出两种定义dp数组的方法。 二维bool型dp数组&#xff1a; class Solution { public:bool isSubsequence(string s, string t) …...

课程项目设计--spring security--认证管理功能--宿舍管理系统--springboot后端

写在前面&#xff1a; 还要实习&#xff0c;每次时间好少呀&#xff0c;进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …...

【算法日志】动态规划刷题:完全背包应用问题(day39)

代码随想录刷题60Day 目录 前言 零钱兑换 完全平方数 前言 今天重点是对完全背包问题进一步了解&#xff0c;难度不大&#xff0c;重点是区分与其他背包问题在初始和遍历上的一些细节。 零钱兑换 int coinChange(vector<int>& coins, int amount) {if (!amount)re…...

基于Python的图书馆大数据可视化分析系统设计与实现【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java、Python等技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; …...

cmake 交叉编译应用程序:手动设置链接脚本

前言 在使用 cmake 交叉编译应该应用程序时&#xff0c;好像没有手动设置【链接脚本】&#xff0c;也能正常构建生成 Makefile&#xff0c;并且可以正常 Make 生成需要的 应用程序。 但是有些应用程序&#xff0c;需要手动指定【链接脚本】&#xff0c;比如修改链接地址&#…...

深入探讨Eureka的三级缓存架构与缓存运行原理

推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,GPT,SDXL等个人总结文档 资源分享 「java、python面试题…...

leetcode496. 下一个更大元素 I 【单调栈】

【简单题】&#xff08;暴力遍历法很简单&#xff09;但是时间复杂度很高&#xff0c;n的立方级别了。。。 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int&g…...

Fastadmin框架 聚合数字生活抵扣卡系统v2.8.6

【2.8.6更新公告】 1.【优化】优化已知问题。 2.【新增 】新增区县影院。...

windows下MSYS、MinGW编译环境使用网络API时报错:undefined reference to `inet_pton‘解决办法

windows下MSYS、MinGW编译环境使用网络API时报错&#xff1a;undefined reference to inet_pton’解决办法 mingw-gcc环境使用网络需要加上库 -lws2_32。 如果是使用的是Qt Creator那么需要在.pro文件中加入一行&#xff1a;win32:LIBS -lws2_32。 当在项目中使用inet_pton、…...

unity-AI自动导航

unity-AI自动导航 给人物导航 一.地形创建 1.首先我们在Hierarchy面板中创建一个地形对象terrian&#xff0c;自行设定地形外貌&#xff0c;此时我们设置一个如下的地形外观。 二.创建导航系统 1.在主人公的Inspector、面板中添加Nav Mesh Agent &#xff08;导航网格代理&…...

使用create-react-app创建react项目

create-react-app 全局安装create-react-app npm install -g create-react-app 使用create-react-app创建一个项目 $ create-react-app your-app 注意命名方式Creating a new React app in /dir/your-app.Installing packages. This might take a couple of minutes. 安装过…...

12.串,串的存储结构与模式匹配算法

目录 一. 一些术语 二. 串的类型定义 &#xff08;1&#xff09;串的顺序存储结构 &#xff08;2&#xff09;串的链式存储结构 三. 串的模式匹配算法 &#xff08;1&#xff09;BF算法 &#xff08;2&#xff09;KMP算法 四. 案例实现 串(String)---零个或多个任意字符…...

Ribbon:listOfServers ,${variableName:defaultValue}

解释&#xff1a; 配置了address的地址,请求会走address&#xff0c;也就是http://127.0.0.1:8081&#xff0c;通常用户与别的后端服务进行联调设置为其本地服务的ip。 如果address的地址被注释掉&#xff0c;如下面所示&#xff0c;类似这样的占位符${variableName:defaultVa…...

TensorFlow二元-多类-多标签分类示例

探索不同类型的分类模型&#xff0c;使用 TensorFlow 构建二元、多类和多标签分类器。 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例&#xff1a;逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例&#xff1a;预测航天飞机…...