python基础之基本数据类型

数据类型的分类

  数字、字符串、列表、元组、字典、集合

1.1、数字int型,主要是用来计算的。

  1.1.1、布尔值型bool

    真 1 True

    假 0 False

2.1、字符串str

  2.1.1、字符串的索引与切片

    索引即下标,就是字符串组成的元素从第一个开始,初始索引为0。 

1
2
3
4
5
= 'ABCD'
print(a[0]) ===> A
print(a[1]) ===> B
print(a[2]) ===> C
print(a[3]) ===> D

    切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则是顾头不顾腚)。

1
2
3
4
5
6
7
= '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 字符串的常用方法。

 View Code
 View Code

 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 改

 View Code

  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 其它

 View Code

  5.1.6 字典的循环

 key_value_items

6.1 其它 range / enumerate / range

  6.1.1 for 循环:用户按照顺序循环可迭代对象的内容。

 for

  6.1.2 enumerate 枚举,对于一个可迭代的对象(iterable)/ 可遍历的对象(list,str等),enumerate将其组成一个索引序列,利用它可以同时获得索引和值

 View Code

  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
= frozenset('sunshine')
print(a,type(a)) # frozenset({'e', 's', 'n', 'i', 'u', 'h'}) <class 'frozenset'>

    集合的一些应用

 View Code

 练习题:

购物车
功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于
总资产,提示账户余额不足,否则,购买成功
goods = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998}
]
原文地址:https://www.cnblogs.com/valorchang/p/11282145.html