数据类型的分类
数字、字符串、列表、元组、字典、集合
1.1、数字int型,主要是用来计算的。
1.1.1、布尔值型bool
真 1 True
假 0 False
2.1、字符串str
2.1.1、字符串的索引与切片
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0。
1
2
3
4
5
|
a = ‘ABCD‘
print (a[ 0 ]) = = = > A
print (a[ 1 ]) = = = > B
print (a[ 2 ]) = = = > C
print (a[ 3 ]) = = = > D
|
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则是顾头不顾腚)。
1
2
3
4
5
6
7
|
a = ‘ABCDEF‘
print (a[ 0 : 2 ]) = = = > AB
print (a[ 2 : 4 ]) = = = > CD
print (a[ 0 :]) = = = > ABCDEF #默认到最后
print (a[ 0 : - 1 ]) = = = > ABCDEF #-1就是最后一个
print (a[ 0 : 5 : 2 ]) = = = > ACE #步长2
print (a[ 5 : 0 : - 2 ]) = = = > FDB # 反向加步长
|
2.1.2 字符串的常用方法。
3.1 元组 tupe
元组也称为只读列表,数据只可以被查询,不能被修改。字符串的切片操作同样适用于列表。列表用()标示,黎明的元素用逗号隔开。如(1,2,3)
4.1 列表 list
列表是python的基础数据类型之一,是用[]括起来,每个元素以逗号隔开,里面可以存放各种数据类型。如:
li = [‘sunshine‘,18,{‘hobby‘:‘eat‘},[1,2,3]]
列表还可以储存大量数据,32位python的限制是536870912个元素,64位python的限制是1152921504606846975 个元素。
列表是有序的,有索引值,可以切片,方便取值。
4.1.1 增
insert_append_extend
4.1.2 删
pop_del_remove_clear
4.1.3 改
4.1.4 查
通过切片的方式或者循环的方式去查。
4.1.5 其它操作
count (数) 统计某个元素在列表中出现的次数。
1
2
|
a = [ ‘s‘ , ‘u‘ , ‘n‘ , ‘s‘ , ‘h‘ , ‘i‘ , ‘n‘ , ‘e‘ ]
print(a.count( ‘s‘ )) # 出现了2次
|
index 方法 用于从列表中找出某个值第一个匹配项的索引位置
1
2
|
a = [ ‘s‘ , ‘u‘ , ‘n‘ , ‘s‘ , ‘h‘ , ‘i‘ , ‘n‘ , ‘e‘ ]
print(a.index( ‘n‘ )) # 第一个出现n的索引位置为 2
|
sort 在原位置对列表进行排序
1
2
3
4
|
a = [ ‘s‘ , ‘u‘ , ‘n‘ , ‘s‘ , ‘h‘ , ‘i‘ , ‘n‘ , ‘e‘ ]
print(a. sort ()) # 输出为 None
a. sort () # 没有返回值
print(a) # [‘e‘, ‘h‘, ‘i‘, ‘n‘, ‘n‘, ‘s‘, ‘s‘, ‘u‘]
|
reverse 将列表中的元素反向存放
1
2
3
4
|
a = [ ‘s‘ , ‘u‘ , ‘n‘ , ‘s‘ , ‘h‘ , ‘i‘ , ‘n‘ , ‘e‘ ]
# print(a.reverse()) # 输出为 None
a.reverse() # 没有返回值
print(a) # [‘e‘, ‘n‘, ‘i‘, ‘h‘, ‘s‘, ‘n‘, ‘u‘, ‘s‘]
|
5.1 字典 dict
字典是Python中唯一的映射类型,采用键值对(key-->value)的形式存储数据。Python 对key进行哈希函数运算,根据运算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示kye必须是不可变类型,如:数组、字符串、元组。
字典是除列表之外最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象结合。两者的区别在于:字典是通过key来取值的,而不是通过偏移存取。
5.1.1 增
setdefaut
5.1.2 删
pop_popitem_clear
5.1.3 改
update
5.1.4 查
get
5.1.5 其它
5.1.6 字典的循环
key_value_items
6.1 其它 range / enumerate / range
6.1.1 for 循环:用户按照顺序循环可迭代对象的内容。
for
6.1.2 enumerate 枚举,对于一个可迭代的对象(iterable)/ 可遍历的对象(list,str等),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
6.1.3 range 指定范围,生成指定数字
range
7.1 集合
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的。主要作用是:
1、去重 ---> 把一个列表变成集合,就自动去重了。
2、关系测试 --> 测试两组数据之间的交集、差集、并集等关系。
7.1.1 创建集合
1
2
3
4
|
set1 = set ({ 1 , 2 , ‘sunshine‘ })
set2 = { 1 , 2 , ‘sunshine‘ }
print (set1, type (set1)) # {1, 2, ‘sunshine‘} <class ‘set‘>
print (set2, type (set2)) # {1, 2, ‘sunshine‘} <class ‘set‘>
|
7.1.2 增
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
set1 = { ‘sunshine‘ , ‘age‘ , 18 }
set1.add( ‘hobby‘ )
print (set1) # {18, ‘age‘, ‘sunshine‘, ‘hobby‘} 集合是无序的
set1.update( ‘A‘ )
print (set1) # {‘A‘, ‘sunshine‘, 18, ‘hobby‘, ‘age‘}
set1.update( ‘BC‘ )
print (set1) # {‘C‘, ‘A‘, ‘sunshine‘, 18, ‘B‘, ‘hobby‘, ‘age‘}
set1.update([ 1 , 2 , 3 ])
print (set1) # {1, 2, 3, ‘C‘, ‘A‘, ‘sunshine‘, 18, ‘B‘, ‘hobby‘, ‘age‘}
# 复制集合
num1 = { 1 , 2 , 3 }
num2 = num1.copy()
print (num2) # {1, 2, 3}
|
7.1.3 删
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
set1 = { ‘sunshine‘ , ‘age‘ , 18 }
set1.remove( ‘sunshine‘ ) # 删除一个元素
print (set1) # {‘age‘, 18}
set1.pop() # 随机删除一个元素
print (set1) # {‘age‘}
set1.clear() # 清空集合
print (set1) # set()
del set1 # 删除集合
print (set1) # 报错 NameError: name ‘set1‘ is not defined
# discard() 删除集合中指定的元素,删除不存在的则不操作
num = { 1 , 2 , 3 }
num.discard( 4 )
print (num) # {1, 2}
num.discard( 3 )
print (num) # {1, 2, 3}
|
7.1.4 其它操作
1
2
|
set1 = { 1 , 2 , 3 }
set2 = { 2 , 3 , 4 }
|
交集 (& 或 intersection)
1
2
3
4
5
6
7
8
|
print (set1 & set2) # {2, 3}
print (set1.intersection(set2)) #{2, 3}
# intersection_update 交集更新操作
dreamers = { ‘ljl‘ , ‘wc‘ , ‘xy‘ , ‘zb‘ , ‘lsy‘ }
girls = { ‘mmf‘ , ‘lsy‘ , ‘syj‘ }
dreamers.intersection_update(girls) # 将集合dreamers与集合girls的交集赋值给dreamers
print (dreamers) # {‘lsy‘}
|
并集 (| 或 union)
1
2
|
print (set1 | set2) # {1, 2, 3, 4}
print (set2.union(set1)) # {1, 2, 3, 4}
|
差集 (- 或 difference)
1
2
3
4
5
6
7
8
|
print (set1 - set2) # {1}
print (set1.difference(set2)) # {1}
# difference_update 差集更新操作。
dreamers = { ‘ljl‘ , ‘wc‘ , ‘xy‘ , ‘zb‘ , ‘lsy‘ }
girls = { ‘mmf‘ , ‘lsy‘ , ‘syj‘ }
dreamers.difference_update(girls) # dreamers去除跟girls相同的元素
print (dreamers) #{‘zb‘, ‘ljl‘, ‘xy‘, ‘wc‘}
|
反交集 (^ 或 symmetric_difference)
1
2
|
print (set1 ^ set2) # {1, 4}
print (set1.symmetric_difference(set2)) # {1, 4}
|
子集与超集 (issubset / issuperset)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
set1 = { 1 , 2 , 3 }
set2 = { 1 , 2 , 3 , 4 , 5 }
print (set1 < set2) # True
print (set1.issubset(set2)) # True 说明set1 是 set2 的子集
print (set2 > set1) #True
print (set2.issuperset(set1)) #True 说明set2 是 set1 的超集
# isdisjoint() # 检测2个集合是否不存在交集,存在交集则返回False
res = set2.isdisjoint(set1)
print (res) # False
#symmetric_difference() 对称差集
set1 = { 1 , 2 , 3 }
set2 = { 2 , 3 , 4 }
res = set1.symmetric_difference(set2)
print (res) # {1, 4}
#symmetric_difference_update() 对称更新差集
set1.symmetric_difference_update(set2)
print (set1) # {1, 4}
|
forzenset 不可变集合,让集合变成不可变类型
1
2
|
a = frozenset ( ‘sunshine‘ )
print (a, type (a)) # frozenset({‘e‘, ‘s‘, ‘n‘, ‘i‘, ‘u‘, ‘h‘}) <class ‘frozenset‘>
|
集合的一些应用
练习题:
购物车功能要求:要求用户输入总资产,例如:2000显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功goods = [ {"name":"电脑","price":1999}, {"name":"鼠标","price":10}, {"name":"游艇","price":20}, {"name":"美女","price":998}]
原文地址:https://www.cnblogs.com/valorchang/p/11282145.html
时间: 2024-10-18 22:37:55