python组合数据类型


一、序列

序列,指的是一块可以存放多个值的连续内存空间,空间中的值按一定顺序排列,每个值对应一个位置编号,这个位置编号称为值的索引或序列,可以通过索引或序号访问它们;python中的序号体系分为正向递增和反向递增序号。

1.1、字符串

字符串(string)是字符的序列,是python中最常见的序列类型,python中的字符串是用单引号(’ ')、双引号(" “)或三引号(”“” “”")括起来的一个或多个字符。

a = '123'
b = "abc"
c = """a1a"""
print("a=",a,"=",type(a))
print("b=",b,"=",type(b))
print("c=",c,"=",type(c))

D:\pythonLED\python.exe E:/pythonProject/1.py
a= 123 = <class 'str'>
b= abc = <class 'str'>
c= a1a = <class 'str'>

1.1.1、访问字符串

对字符串中的单个字符或连续多个字符进行访问时,可以采用单个访问或区间访问。

单个访问

单个访问的功能是访问字符串a中序号n对应的字符,其中,a是存储字符串的变量名称,n是希望访问的字符串的序号。

语法:a[n]

a = "Hello World!"
print("a=",a[0])
print("a=",a[-1])
print("a=",a[5])

D:\pythonLED\python.exe E:/pythonProject/1.py
a= H
a= !
a=  

区间访问

区间访问的功能是访问字符串a中多个字符,其中,a是存储字符串的变量名称,n是第一个字符的序号,m是访问的多个字符串结束的位置,访问到的字符串不包含该位置上的字符,k为步长,限定访问方向和访问频率,当k为正数时,正向访问,当k为负数时,反向访问,访问频率表示从第一个访问位置开始每几个字符中取1个字符。

语法:a[n: m :k]

a = "Hello World!"
print("a=",a[0:8:2])
print("a=",a[7:2:-2])
print("a=",a[2:5])
print("a=",a[:7:2])
print("a=",a[::2])

D:\pythonLED\python.exe E:/pythonProject/1.py
a= HloW
a= o l
a= llo
a= HloW
a= HloWrd

1.1.2、转义字符

作为程序设计语言,python和c类似,也有转义字符;\与后面一个字符组成一个转义字符,产生新的含义,如:当需要输出引号或反斜杠时,就可以使用转义字符。

转义字符功能
\n表示换行
\\表示反斜杠
\’表示单引号
\"表示双引号
\t表示水平制表符(TAB)
print('\'python\'')

D:\pythonLED\python.exe E:/pythonProject/1.py
'python'
print('\\python\\')

D:\pythonLED\python.exe E:/pythonProject/1.py
\python\
print('pyt\nhon')

D:\pythonLED\python.exe E:/pythonProject/1.py
pyt
hon
print("\"python\"")

D:\pythonLED\python.exe E:/pythonProject/1.py
"python"
print('pyt\thon')

D:\pythonLED\python.exe E:/pythonProject/1.py
pyt	hon

1.1.3、字符串运算符

运算符功能
x + y返回字符串x的长度
n * x或x * n复制n此子串x
x in s如果x是s的子串,返回True,否则返回False
x not in s如果x不是s的子串,返回True,否则返回False
str[ i ]索引,返回第i个字符
str[ N:M ]切片,返回第N个字符到第M个字符(子串),不包含第M个字符

1.1.4、字符串处理函数

函数功能
len(x)返回字符串x的长度
str(x)把任意类型数据x转换为字符串
chr(x)返回Unicode代码x对应的单字符
ord(x)返回单字符x对应的Unicode代码
hex(x)返回整数x对应的十六进制数的小写形式字符串
oct(x)返回整数x对应的八进制数的小写形式字符串

1.1.5、字符串处理方法

方法功能
str.lower()字符串中字母小写
str.upper()字符串中字母大写
str.islower()字符串中所有字母都是小写,返回True
str.isnumeric()字符串中所有字符都是数字,返回True
str.isspace()字符串中所有字符都是空格,返回True
str.split(sep=None)按指定字符分割字符串为数组,默认分隔符为空格
str.replace(old,new,[count])字符串替换
str.strip([char])去掉两边空格或去掉指定字符
str.count(sub[,start[,end]])返回str[start:end]中sub子串出现的次数

1.2、列表

列表(list)是最常用的python序列类型,对于字符串起连接作用的“+”、起复制左右的“*”和用于成员判断的“in” “not in”对于元组有同样的功能,列表的数据项不需要具有相同的类型,列表中的元素按先后顺序排列,元素之间可以没有任何关系,列表类似其他语言的数组,但功能比数组强大。

1.2.1、创建列表

创建列表可以用以下三种方式
空列表

list1 = []
print(list1,"=",type(list1))

D:\pythonLED\python.exe E:/pythonProject/1.py
[] = <class 'list'>

列表赋值

list1 = ['list','123','abc']
print(list1,"=",type(list1))

D:\pythonLED\python.exe E:/pythonProject/1.py
['list', '123', 'abc'] = <class 'list'>

其他数据类型转换为列表

list1 = list('list')
print(list1,"=",type(list1))

D:\pythonLED\python.exe E:/pythonProject/1.py
['l', 'i', 's', 't'] = <class 'list'>

1.2.2、访问列表

访问列表与访问字符串类似,可以对列表中的单个元素进行访问,也可以访问连续的多个元素。

单个访问

list1 = ['list','123','abc']
print('list=',list1[0])
print('list=',list1[-1])

D:\pythonLED\python.exe E:/pythonProject/1.py
list= list
list= abc

区间访问

list1 = ['list','123','abc','456','def','789']
print('list=',list1[0:3])
print('list=',list1[1:2:4])

D:\pythonLED\python.exe E:/pythonProject/1.py
list= ['list', '123', 'abc']
list= ['123']

注:包头不包尾

整体访问

list1 = ['list','123','abc','456','def','789']
print('list=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list= ['list', '123', 'abc', '456', 'def', '789']

遍历访问

list1 = ['list','123','abc','456','def','789']
for i in list1:
    print(i,end=(','))

D:\pythonLED\python.exe E:/pythonProject/1.py
list,123,abc,456,def,789,
list1 = ['list','123','abc','456','def','789']
for i in range(len(list1)):
    print(i,end=(','))
    
D:\pythonLED\python.exe E:/pythonProject/1.py
0,1,2,3,4,5,

注:方法二中返回的其实是步长序号。

1.2.3、操作列表

对列表的操作进行修改、增加、插入、查找、删除、清空列表。

修改:用新值替换序号(索引)对应元素的内容。

list1 = ['list','123','abc','456','def','789']
list1[0] = 'str'
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['str', '123', 'abc', '456', 'def', '789']

增加:在列表末尾增加元素。

list1 = ['list','123','abc','456','def','789']
list1.append('str')
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['list', '123', 'abc', '456', 'def', '789', 'str']

插入:在指定位置插入指定元素。

list1 = ['list','123','abc','456','def','789']
list1.insert(2,'str')
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['list', '123', 'str', 'abc', '456', 'def', '789']

查找:在列表中查询指定元素,也称为成员判断。

list1 = ['list','123','abc','456','def','789']
print('abc' in list1)
print('abc' not in list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
True
False

删除:删除列表元素。

list1 = ['list','123','abc','456','def','789']
list1.pop(3)
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['list', '123', 'abc', 'def', '789']
list1 = ['list','123','abc','456','def','789']
list1.remove('123')
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['list', 'abc', '456', 'def', '789']
list1 = ['list','123','abc','456','def','789']
del list1[3]
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= ['list', '123', 'abc', 'def', '789']

清空列表:将列表中所有元素删除。

list1 = ['list','123','abc','456','def','789']
list1.clear()
print('list1=',list1)

D:\pythonLED\python.exe E:/pythonProject/1.py
list1= []

1.2.4、列表常用函数及方法

函数及方法功能
len(list)返回列表元素个数
max(list)返回列表元素中的最大值
min(list)返回列表元素中的最小值
list.count(obj)统计某个元素在列表中出现额次数
list1.extend(list2)扩展列表,在一个列表的末尾追加一个新的列表,参数为一个列表
list.index(obj)从列表中找出某一个值的第一个匹配项的位置
list.reversr()返回排列列表中的元素,该方法没有返回值
list.sort()对列表进行排序,该方法没有返回值
list.copy()复制列表

随机产生100个[70,100]中的数据,每10个一行输出,找出最大值及其第一此出现的位置,并统计其出现的次数。

import random
list=[]
for i in range(0,100):  # 循环100次
    x = random.randint(70,100)  # 生成一个70到100之间的随机整数
    list.append(x)  # 将随机整数添加到列表中
    print(list[i],end="")  # 打印当前随机数,不换行
    if (i + 1) % 10 == 0:  # 每10个数字换一行
        print()
maxnum = max(list)  # 找到列表中的最大值
print(maxnum)  # 打印最大值
print(list.index(maxnum))  # 打印最大值在列表中的索引
print(list.count(maxnum))  # 打印最大值在列表中出现的次数

D:\pythonLED\python.exe E:/pythonProject/1.py
82857682788772857873
94778496777879869284
75787876938288728399
95899499789396998884
93887985869470777984
93759976927472968784
91709473768580947298
83877093978599717171
90978085958672798577
92768999819787888673
99
29
6

Process finished with exit code 0

随机产生26个不重复的小写英文字母,按从大到小排列。

import random
s = []  # 创建一个空列表用于存储随机生成的字母
for i in range(1,100):  # 循环100次
    x = random.randint(97,122)  # 生成一个97到122之间的随机整数,对应ASCII码中的小写字母
    if chr(x) not in s:  # 如果生成的字母不在列表中
        s.append(chr(x))  # 将生成的字母添加到列表中
    if len(s) == 26:  # 如果列表中已经有26个不同的字母
        break  # 跳出循环
s.sort(reverse=True)  # 对列表中的字母进行降序排序
print(s)  # 打印排序后的列表


D:\pythonLED\python.exe E:/pythonProject/1.py
['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']

1.3、元组

python的元组(tuple)和列表类似,也是序列类型,通过序号访问各个元素,对于字符串起连接作用的“+”、起复制作用的“*”和用于成员判断的“in”、“not in”对于元组有同样的功能。

元组和列表的区别有两类,一类是元组使用小括号( ),列表使用中括号[ ];二类是元组的元素不能被修改,而列表的元素可以被修改,因此元组没有增加、插入、删除单个元素等方法。

1.3.1、创建元组

用逗号将一组数据彼此隔开并赋值给元组名,即可生成元组。

a = (1,2,3)
b = 4,5,6
c= (7)
d = 8,
print('a=',type(a),'\n','b=',type(b),'\n','c=',type(c),'\n','d=',type(d))

D:\pythonLED\python.exe E:/pythonProject/1.py
a= <class 'tuple'> 
 b= <class 'tuple'> 
 c= <class 'int'> 
 d= <class 'tuple'>

1.3.2、访问元组

虽然元组的元素不能被改变,但是元组也是序列类型,列表对元素的访问方式对元组通用适用,虽然元组用小括号表示边界,但是用序号访问元组的元素时依然用中括号表示。

单个访问

a = 1,2,3,4,5,6)
print(type(a),a[5])

D:\pythonLED\python.exe E:/pythonProject/1.py
<class 'tuple'> 6

区间访问

a = (1,2,3,4,5,6,7,8,9)
print(a[0:6:2])

D:\pythonLED\python.exe E:/pythonProject/1.py
(1, 3, 5)

整体访问

a = (1,2,3,4,5,6,7,8,9)
print(a)

D:\pythonLED\python.exe E:/pythonProject/1.py
(1, 2, 3, 4, 5, 6, 7, 8, 9)

遍历访问

a = (1,2,3,4,5,6,7,8,9)
for i in a:
    print('i=',i,type(i),end=(','))

D:\pythonLED\python.exe E:/pythonProject/1.py
i= 1 <class 'int'>,i= 2 <class 'int'>,i= 3 <class 'int'>,i= 4 <class 'int'>,i= 5 <class 'int'>,i= 6 <class 'int'>,i= 7 <class 'int'>,i= 8 <class 'int'>,i= 9 <class 'int'>,

1.3.3、删除元组

元组和列表不一样,元组中的元素不允许被单独修改、删除或清空,因此只能使用del语句来删除整个元组。

使用del之后,元组不再存在,如果继续访问则会出现NameError: name ‘a’ is not defined异常。

a = ('1',2,3,4,5,6,7,8,'9')
print("删除之前的元组:",a)
del a
print("删除之后的元组:",a)

D:\pythonLED\python.exe E:/pythonProject/1.py
删除之前的元组: ('1', 2, 3, 4, 5, 6, 7, 8, '9')
Traceback (most recent call last):
  File "E:\pythonProject\1.py", line 225, in <module>
    print("删除之后的元组:",a)
                     ^
NameError: name 'a' is not defined

1.3.4、元组的常用函数

函数功能
len(tuple)返回元组元素个数
max(tuple)返回列表元素中的最大值
min(tuple)返回列表元素中的最小值
tuple(list)将列表转换为元组

二、集合

集合(set)是组合数据类型的一种,集合类型数据与数学中的集合概念相同,为包含0个或多个元素的无序组合;集合与序列最大的区别就在于集合中的元素是无序的,彼此之间没有位置关系,并且集合中不存在相同的元素;因此集合没有序号和位置的概念,不能切片。

a = {"set",(18,"男"),56,1.45}
print("a=",a,type(a))

D:\pythonLED\python.exe E:/pythonProject/1.py
a= {56, 1.45, (18, '男'), 'set'} <class 'set'>
a = set('Hello world')
print("a=",a,type(a))

D:\pythonLED\python.exe E:/pythonProject/1.py
a= {'l', 'e', 'H', 'w', ' ', 'd', 'r', 'o'} <class 'set'>

集合的常用函数及方法

函数及方法功能
S.add(x)如果元素x不再集合s中,则将x添加到S
S.clear()移除集合S中的所有元素
S.copy()返回集合S的一个副本
S.pop()随机返回集合S中的一个元素,如果S为空,则产生“KeyError”异常
S.discard()如果元素x在集合S中,移除该元素;如果元素x不再集合S中,不报错
S.remove(x)如果元素x在集合S中,移除该元素;如果元素x不在集合S中,则产生“KeyError”异常
S.isdisjoint(T)如果集合S和集合T没有相同元素,则返回True
Len(S)返回集合S的元素个数

三、字典

在Python中,字典用放在花括号{}中的一系列键—值对表示。每个键—值对通过冒号:连接,不同键值对之间用逗号,分隔。字典中的键是唯一的,而值不需要唯一。字典的值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。

在实际应用中,字典常用于存储配置信息、进行快速查找和映射等场景。例如,可以将用户信息作为值,以用户名作为键来创建一个用户字典;或者用字典来存储程序配置项,通过配置名快速获取配置值。

  • 字典的创建:可以使用大括号{}直接创建,例如:d = {‘key1’: ‘value1’, ‘key2’: ‘value2’}。也可以使用set()函数从其他数据类型转换为集合,例如:s = set([1, 2, 3])。
  • 字典的访问:把相应的键放入熟悉的方括弧,例如:tinydict[‘Name’]返回对应的值。如果用字典里没有的键访问数据,会输出错误。
  • 字典的修改:向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对。
  • 字典元素的删除:能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令。
  • 字典键的特性:字典值可以没有限制地取任何python对象,但键不行。两个重要的点需要记住:1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。
  • 字典内置函数&方法:Python字典包含了以下内置函数:cmp(dict1, dict2)比较两个字典元素。

3.1、创建字典

字典的创建有两种方式,可以直接创建空字典,也可以将键值对赋值给字典变量。

使用大括号创建字典

d = { }
print('d=',type(d),d)

D:\pythonLED\python.exe E:/pythonProject/1.py
d= <class 'dict'> {}

将键值对赋值给字典变量

d = {'name':'小明','age':18,'sex':'男'}
print('d=',type(d),d)

D:\pythonLED\python.exe E:/pythonProject/1.py
d= <class 'dict'> {'name': '小明', 'age': 18, 'sex': '男'}

3.2、访问字典

字典中,通过指定放在中括号中的键访问对应的值,字典的键就相当于列表的序号;其他组合数据类型都是通过数字索引来获得值,字典是通过字符索引来获得值。

d = {'name':'小明','age':18,'sex':'男'}
print('d=',type(d),d['name'])

D:\pythonLED\python.exe E:/pythonProject/1.py
d= <class 'dict'> 小明

遍历字典

d = {'name': '小明', 'age': 18, 'sex': '男'}
for key, value in d.items():
    print(key, value)

D:\pythonLED\python.exe E:/pythonProject/1.py
name 小明
age 18
sex 男

3.3、修改字典元素

字典元素是可以修改的,通过键找到具体元素之后,给出一个新的元素即可。

d = {'name': '小明', 'age': 18, 'sex': '男'}
d['age'] = 20
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
{'name': '小明', 'age': 20, 'sex': '男'}

3.4、添加字典元素

动态地向字典添加元素的时候,只要添加的键在字典中不存在,就会新增这个元素。

d = {'name': '小明', 'age': 18, 'sex': '男'}
d[' ip address'] = '192.168.1.1'
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
{'name': '小明', 'age': 18, 'sex': '男', ' ip address': '192.168.1.1'}

3.5、删除字典元素

del语句

d = {'name': '小明', 'age': 18, 'sex': '男'}
del d['age']
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
{'name': '小明', 'sex': '男'}
d = {'name': '小明', 'age': 18, 'sex': '男'}
del d
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
Traceback (most recent call last):
  File "E:\pythonProject\1.py", line 260, in <module>
    print(d)
          ^
NameError: name 'd' is not defined. Did you mean: 'id'?

pop语句

d = {'name': '小明', 'age': 18, 'sex': '男'}
d.pop('age')
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
{'name': '小明', 'sex': '男'}

clear语句

d = {'name': '小明', 'age': 18, 'sex': '男'}
d.clear()
print(d)

D:\pythonLED\python.exe E:/pythonProject/1.py
{}

3.6、字典的常用函数及方法

函数及方法功能
len(dict)返回字典元素个数
type(variable)返回输入变量的数据类型,如果变量是字典就返回<class’dict’>
dict.fromkeys(seq[,value])创建一个新字典,以序列seq中的元素作为字典的键,value为字典所有键对应的初始值
key in dict如果键在字典dict里,则返回True,否则返回False
dict.keys()以列表返回一个字典的所有键
dict.values()以列表返回一个字典中的所有值
dict.items()以列表返回一个字典中的所有键值对
dict.get(key,default=None)返回指定键的值,如果值不在字典中,则返回default
# 创建一个字典
my_dict = {"name": "小明", "age": 18, "sex": "男"}

# 使用update()函数更新字典中的键值对
my_dict.update({"city": "北京", "job": "学生"})
print("更新后的字典:", my_dict)

# 使用get()函数获取字典中的值
name = my_dict.get("name")
print("获取到的名字:", name)

# 使用pop()函数删除字典中的键值对
age = my_dict.pop("age")
print("删除的年龄:", age)
print("删除后的字典:", my_dict)

D:\pythonLED\python.exe E:/pythonProject/1.py
更新后的字典: {'name': '小明', 'age': 18, 'sex': '男', 'city': '北京', 'job': '学生'}
获取到的名字: 小明
删除的年龄: 18
删除后的字典: {'name': '小明', 'sex': '男', 'city': '北京', 'job': '学生'}
  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十一的学习笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值