一、数据类型
- 整数型:int型,正负整数,没有小数点
- 浮点型:float型,小数和整数
- 复数
- 常量:不能改变现有的值,如pi
- 布尔型:True False
- 字符串: 文本数据类型
'a' - 数据类型转换:可以通过相关函数进行转换
# 整数 浮点数
>>> a = 5
>>> type(a)
<class 'int'>
>>> b = 3.3
>>> type(b)
<class 'float'>
>>> int(b)
3
>>> float(a)
5.0
>>> 6//3 除以的整数部分
2
>>> 7//3
2
>>> 4%3 除以的余数部分
1
>>> 12%4
0
# 布尔
>>> 3 > 5
False
>>> 'a' is 'a'
True
>>> 'a' is a
False
>>> True or False
True
>>> not True
False
# 字符串
# 用单引号或者str()函数创建
>>> s='我是python'
或者
>>> s=str('我是python')
>>> s
'我是python'
>>> type(s)
<class 'str'>
# 用[]来索引其中元素
# 字符串里的元素不可以更改
>>> s[1]
'是'
>>> s[1:3]
'是p'
>>> s[-5:-1]
'ytho'
>>> s * 3 # 字符串乘法
'我是python我是python我是python'
>>> v = 'hello'
>>> s+v # 字符串相加
'我是pythonhello'
>>> 'hello,'+'world'+'b'*10 # 先算乘法
'hello,worldbbbbbbbbbb'
# inf
>>> float('-inf') # 用float()函数创造一个-∞
-inf
>>> type(float('-inf'))
<class 'float'>
# nan(非数值)
>>> float('-inf')+float('inf')
nan
>>> type(float('-inf')+float('inf'))
<class 'float'>
# None 空值 常用来做判断
>>> x=None
>>> x
>>> float(x)
二、数据结构
数据结构就是存储数据的方式
- 列表list:包含不同数据类型的有序集合
- 元组tuple:tuple和list非常类似,但是tuple一旦初始化就不能修改
- 集合set:无序的、不重复的组合体
- 字典dict:存放key:value的容器
1、列表
# 创建一个列表,用中括弧。列表里的元素的数据类型可以不一样
li = [1,2,3,'abc', 4.5,[2,3,4],{1:'one'}]
整数、字符串、浮点数、列表、字节
s = [] # 空列表
>>> li = list('abc')
>>> li
['a', 'b', 'c']
# 列表的信息:长度
>>> len(li) # 列表li的长度
>>> max(li) # 列表li的最大值
>>> min(li) # 列表li的最小值
# 根据索引读写 :列表名➕中括弧里放索引(从0开始计数)
>>> li[0] 打印列表li中下标为0的元素,也就是第一个元素。
or
>>> print(li[0])
1
>>> print(li[5]) 列表li中下标为5的元素,也就是第六个元素
[2, 3, 4]
>>> print(li[-1]) -1代表倒数第一个元素,以此类推
{1: 'one'}
# 切片(左闭右开)
>>> li[2:5] 2<=下标<5 列表中下标2、3、4的元素
[3, 'abc', 4.5]
>>> li[:5] 省略左边,0<=下标<5,也就是下标为0 1 2 3 4的元素
[1, 2, 3, 'abc', 4.5]
>>> li[5:] 省略右边,5<=下标,直到最后一个元素
[[2, 3, 4], {1: 'one'}]
>>> li[:] 左右都省略,表示所有元素
等于
>>> li
[1, 2, 3, 'abc', 4.5, [2, 3, 4], {1: 'one'}]
>>> li[0:4:2] 0=<下标<4 而且 从0开始,每次加2,步长为2。 综上,下标为0、2的元素
[1, 3]
>>> li[3::2] 3=<下标,直到最后一个元素(6) 而且 从3开始每次加上2。综上 下标为3 5
['abc', [2, 3, 4]]
>>> li[-6:-1:1] 倒数第六个=<元素<倒数第一个 每次加1
[1, 2, 3, 4, 5]
步长为负数
>>> li= [0,1,2,3,4,5,6]
>>> li[::-1] 缺少左边默认为-1倒数第一个元素开始,缺少右边默认为到第一个元素。步长为-1,就是从后往前每次加1。 倒数1 2 3 4 5 6 7个元素 也就是把原列表倒过来
等于
>>> li[-1::-1]
等于
>>> li.reverse()
[6, 5, 4, 3, 2, 1, 0]
>>> li[::-2] 倒数1 3 5 7个元素
[6, 4, 2, 0]
>>> li[-1:-4:-1] 倒数第1 2 3个元素 不包括倒数第四个元素
[6, 5, 4]
# 添加元素
>>> li=[1,2,3]
>>> li.append('a')
>>> print(li)
[1, 2, 3, 'a']
>>> li.append([4,5,6]) # 把列表作为一个元素后加入
>>> print(li)
[1, 2, 3, 'a', [4, 5, 6]]
>>> li.extend([7,8,9]) # 把列表拆开后,一个个加入
>>> print(li)
[1, 2, 3, 'a', [4, 5, 6], 7, 8, 9]
>>> li = [1,2,3]
>>> li.insert(0,'0') # 把字符串0添加为列表的第一个元素
>>> li
['0', 1, 2, 3]
# 删除元素
>>> li.pop() # 删除最后一个元素,并且返回值
9
>>> li.pop(0) # 删除下标为1的元素,并且返回值
1
>>> print(li)
[2, 3, 'a', [4, 5, 6], 7, 8]
>>> del(li[1]) # 删除列表里li中第二个元素
>>> print(li)
[3, 'a', [4, 5, 6], 7, 8]
>>> li = ['0','0', 1, 2, 3]
>>> li.remove('0') # 直接输入元素名字‘0’,删掉第一次出现的这个元素,有第二个的话不删掉
>>> li
['0',1, 2, 3]
# 判断列表中是否有这个元素
>>> print(1 in li)
False
>>> print(7 in li)
True
>>> print(4 in li)
False
# 列表是否为空
>>> not li 列表li是空的
False 返回false说明不是空的
>>> print(len(li)) 打印列表li的长度,如果为0就代表该列表是空的
6
# 列表和字符串 修改字符串
>>> s = 'abcd' 定义一个字符串s
>>> li=list(s) 把字符串s拆成一个个单独的字符后,组成列表li(元素全是单个字符)
>>> li
['a', 'b', 'c', 'd']
>>> li[3]='T'
>>> print(li)
['a', 'b', 'c', 'T']
>>> s=''.join(li) 把元素全是单个字符的列表组成字符串
>>> s
'abcT'
# 遍历列表
>>> for i in li : print(i)
1
2
3
>>> for i in range(len(li)): print(li[i])
1
2
3
# 计数
>>> li=[1,1,2,3,4,4]
>>> li.count(1) # 数字1在列表中的个数
2
>>> li.index(2) # 数字2在列表中第一次出现的下标
2
# 排序
>>> li=[1,3,2]
>>> li.sort()
>>> li
[1, 2, 3]
# 列表的加法、乘法
>>> a=[1,2,3]
>>> b=list('python')
>>> b
['p', 'y', 't', 'h', 'o', 'n']
>>> a+b # 加法 把列表里面的元素拼接一起
[1, 2, 3, 'p', 'y', 't', 'h', 'o', 'n']
>>> a*3 # 乘法 把列表里的元素复制三次
[1, 2, 3, 1, 2, 3, 1, 2, 3]
# 快速生成个列表
生成器range(i,j,b) 生成一个整数列表,i=<里面的整数<j,b为步长
range(5) = range(0,5) 默认从0开始 0 1 2 3 4
>>> print([i*2 for i in range(10)])
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> print([(x,y) for x in range(3) for y in range(3)])
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
2、元组
# 定义一个元组,用小括弧。
# 和列表一样,但是只读不写
>>> tp=(1,2,3)
>>> tp
(1, 2, 3)
>>> tp=tuple([1,2,3]) # 里面放个列表
>>> tp
(1, 2, 3)
# 删除整个元组
>>> del tp
# 元组的加法
>>> a=(1,2,3)
>>> a*3 # 乘法 复制三次
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> b=tuple([4,5,6])
>>> a+b # 加法 拼接
(1, 2, 3, 4, 5, 6)
>>> a1,a2,a3,a4,a5,a6=a+b # 把元组中的值一次赋值给这些变量
>>> a1
1
3、集合
集合:无序的、不重复的组合体,不能用下标去索引
# 初始化一个集合,set()里面放一个列表,若有重复数字会被自动消去
>>> s_a = set([1,1,3,2])
>>> print(s_a)
{1, 2, 3}
# 添加元素
>>> s_a.add(6) 添加一个数6到集合
>>> s_a
{1, 2, 3, 6}
>>> s_a.update([2,4,5,6]) 添加一个列表,若有重复会自动消去
>>> s_a
{1, 2, 3, 4, 5, 6}
# 删除元素
>>> s_a.remove(6) # 想删除那个元素,直接把这个元素放进括号
>>> s_a
{1, 2, 3, 4, 5}
# 判断集合中某个元素是否存在
>>> 1 in s_a
True
>>> 6 in s_a
False
>>> {1}.issubset(s_a)
True
>>> {1,7}.issubset(s_a)
False
# 判断集合是否为空
>>> not s_a
False
# 遍历集合中每个元素
>>> s_a = set([2,3,5,7])
>>> for i in s_a: print(i)
2
3
5
7
# 集合的并
>>> s_a= set([1,2,3,4,5])
>>> s_b = set([4,5,6,7,8])
>>> s_a | s_b
or
>>> s_a.union(s_b)
{1, 2, 3, 4, 5, 6, 7, 8}
# 集合的交
>>> s_a & s_b
>>> s_a.intersection(s_b)
{4, 5}
# 集合的差
>>> s_a - s_b # s_a中减去s_b共有的部分
or
>>> s_a.difference(s_b)
{1, 2, 3}
# 集合的对称差 并集-交集。俩集合合并之后,删掉所有重复的
>>> s_a ^ s_b
or
>>> s_a.symmetric_difference(s_b)
{1, 2, 3, 6, 7, 8}
# 判断s_a是不是s_b的子集
>>> s_a < s_b
False
4、字典
# 初始化一个字典d,用花括弧,就是key value哈希表
>>> d={'a':1,2:'b'}
>>> d
{'a': 1, 2: 'b'}
# 获取长度
>>> len(d)
2
# 根据键名读写
>>> d['a'] # 字典名➕中括弧里放key就行
1
>>> d['2'] # 键'2'根本就不在字典d里面,所以报错
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
d['2']
KeyError: '2'
>>> d.get('2',1) # 键'2'如果不存在于这个字典d中,就会返回1(自定);在字典d中就返回对应的value
1
>>> d[2]
'b'
>>> d.keys() # 获取这个字典所有的key
dict_keys(['a', 2])
>>> d.values() # 获取这个字典所有的value
dict_values([1, 'b'])
>>> d.items() # 获取这个字典所有的items(key和value组合)
dict_items([('a', 1), (2, 'b')])
# 添加元素
>>> d['f']=5
>>> d
{'a': 1, 2: 'b', 'f': 5}
# 删除元素
>>> del(d['f'])
>>> d
{'a': 1, 2: 'b'}
>>> d.pop('f') # 返回被删的键值
# 判断key是否存在
>>> 'a' in d
True
>>> d.get('2',1) # 键'2'如果不存在于这个字典d中,就会返回1(如果我们不假设这个1,就是None);在字典d中就返回对应的value
1
>>> d.get('2') is None
True
# 判断字典是否为空
>>> not d d是空的
False 错误
# 清空字典
>>> d.clear()
# 遍历
方法一:按key遍历:先获取到key的集合,在用key作为索引访问每个元素
>>> for k in d.keys() : print(str(k)+':'+str(d[k]))
a:1
2:b
方法二:按每个item(key:value)遍历
>>> for k,v in d.items():print(str(k)+':'+str(v))
a:1
2:b