目录
7.1 python的list(列表) 底层的实现就是使用双向链表结构实现的
1.python数据类型
基本数据类型:
数值型(number):
整数型(int):
浮点数(float):
复数(虚数):
布尔类型:
真:True
假:False
字符串:
单引号:'字符串'
双引号:"字符串"
三引号:"""也是字符串""" ''' 这个也是'''
None:代表空,也就是没有的意思
复合数据类型:
对象,万物皆对象
list
set
dict
tuple
2.数据类型转换:
自动类型转换:
整数和小数运算,会自动向高精度转换
如果布尔类型和数值型进行运算,布尔类型会自动转换为数值
True:转换为数字1
False:转换为数字0
强制类型转换:
int(字符串) # 将字符串转换为整数
float(字符串) # 将字符串转换为浮点数
str(数值) # 将其他类型转换为字符串
3.字符串格式化输出:
python提供了很多种字符串格式化输出的方式
1、通过%s占位, %d %f
2、将其他类型全部转换为字符串,通过+拼接,统一输出
3、{}占位输出
4、f"{a} + {b} = {a + b}"
5、通过逗号显示变量
4.常见运算符:
4.1 算术运算符
算术运算符:
+ #
-
*
/
%
** # 幂次方
// # 整除
4.2 关系(比较)运算符
关系(比较)运算符:
>
<
>=
<=
==
!=
结果是布尔值
4.3逻辑运算符
逻辑运算符:
and # 并且的关系
or # 或者的关系
not # 不是,取反的意思
4.4 赋值运算符
赋值运算符:
= # 将等号右侧的结果赋值给左侧
+= # a += 10 <===> a = a + 10
-=
*=
/=
//=
**=
%=
python中,没有自加和自减运算符,请使用+=和-=来替代!!!
4.5 三目运算符
三目运算符:
C、java等等语言中:
变量 = 表达式 ? 结果1 : 结果2;
a = 10 > 3 ? 20 : 100;
if (10 > 3) {
a = 20;
} else {
a = 100;
}
python中:
变量 = 结果1 if 表达式 else 结果2
4.6 位运算符
位运算符:
位(bit):它是计算机中的最小单位
&
|
^
~
<<
>>
10 1010
11 1011
与运算符
10 & 11 = 10
1010
1011 &
-------------
1010
或运算符
10 | 11 = 11
1010
1011 |
-------------
1011
异或运算
10 ^ 11 = 1
0000 1010
0000 1011 ^
-------------
0000 0001
按位取反
~
~0000 1010
-----------
1111 0101
左移运算
<<
右移运算符
>>
-2 + 2 = 0
0000 0010
1000 0010 +
--------------
1000 0100
如下的三个概念,全部都是因为负数二进制运算出错,为了解决这个问题而诞生
原码:原始的二进制码
反码:符号位不变,其余各位取反
补码:反码加1
0000 0010
1000 0010
1111 1101 反
1111 1110 2的补码
0000 0010
1111 1110 +
-------------
0000 0000
-2 + 1 = -1
1111 1110
0000 0001 +
----------
1111 1111
1111 1110
1000 0001
5.程序控制流程:
选择结构:
5.1单分支:
if 条件:
# 条件成立,执行缩进的代码
5.2双分支
if condition:
# 条件成立,执行缩进的代码
else:
# 条件不成立,则执行else中的代码
5.3 多(三)分支
if 条件1:
# 条件1成立,执行缩进的代码
elif 条件2:
# 条件2成立,执行缩进的代码
……
elif 条件n:
# 条件n成立,执行缩进的代码
[else:
# 剩余条件
6.循环
1.while循环: 周而复始
语法结构:
while condition:
# 循环体
# 循环体
break关键字:
终止当前循环
continue关键字:
跳过本次循环,进入下次循环【看条件】
完整的循环语法结构:
while 条件:
# 循环体
[else:
# 循环正常结束后,才可以执行的代码
]
2. for循环本质是一种迭代
for 变量 in 容器:
# 变量就是容器中的具体值
range函数:
range(num) # 获取一个区间 [0, num)
range(start, end) # 获取一个区间 [start, end)
range(start, end, step) # 获取一个区间 [start, end),步长是step
7.容器
什么是容器:
线性表:有序的容器结构
数组(array):有连续的内存空间组成
链表(list):不连续的内存空间组成了逻辑结构
栈(stack):后进先出(LIFO),先进后出(FILO)
队列(queue):先进先出,后进后出
7.1 python的list(列表) 底层的实现就是使用双向链表结构实现的
python的list(列表)
定义list:
通过弱数据类型语言的特点,直接将值赋值为一个变量
users = ['刘建宏', '刘帅哥', '五号', '吴帅哥']
通过list全局函数创建列表:
u2 = list([12,2,2,25,2,5])
使用列表元素:
通过下标获取某个元素值
注意:下标是从零开始
u2[3] # 获取第四个u2中的值
获取列表长度:
len()全局函数
如何修改值:
列表的遍历:
for i in users:
print(i)
index = 0
while index < len(users):
print(users[index])
index += 1
列表的常见方法:
['append', 'clear', 'copy', 'count',
'extend', 'index', 'insert', 'pop',
'remove', 'reverse', 'sort']
|-- append(新元素) # 在尾部追加新的元素
|-- insert(index, 新元素) # 在特定的位置插入新元素
|-- clear() # 清空列表
|-- remove(元素) # 通过元素本身删除元素,如果该元素不存在,则抛出异常
|-- pop(index=-1) # 可以通过位置删除元素,默认删除最后一个
|-- count(元素) # 统计元素在列表中出现的次数
|-- index(元素) # 获取元素在列表中的第一个位置索引,如果没有该元素,则抛出异常
|-- copy() # 浅拷贝对象
|-- extend() # 列表合并
|-- reverse() # 翻转列表元素顺序
|-- sort() # 排序列表元素
7.2 set(集合)
set的使用:
Hash表实现(哈希、散列表):无序、不能重复
set的定义:
s = {元素, ……}
ss = set()
ss = set([1,3,4,54,5,4,4,3,1]) # 将列表转换为集合
set是无序,不存在下标索引
常见方法:
['add', 'clear', 'copy', 'difference', 'difference_update',
'discard', 'intersection', 'intersection_update', 'isdisjoint',
'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference',
'symmetric_difference_update', 'union', 'update']
|-- add(新元素) # 添加新的元素
|-- clear()
|-- copy()
|-- difference() # 差集
|-- intersection() # 交集
|-- union() # 并集
|-- discard # 通过元素本身删除元素,如果该元素不存在,则抛什么都不做
|-- remove(元素) # 通过元素本身删除元素,如果该元素不存在,则抛出异常
|-- pop() # 随机移除元素
7.3元组(tuple):
元组是一种不可变的数据类型
|-- count()
|-- index()
7.4 dict(字典):
键值对的访问:
字典的常见方法:
['clear', 'copy', 'fromkeys',
'get', 'items', 'keys', 'pop', 'popitem',
'setdefault', 'update', 'values']
|-- clear()
|-- copy()
|-- keys()
|-- values()
|-- items() #
|-- get() #
|-- pop(key) # 通过键删除键值对
|-- popitem() #
字典的遍历:
for key in 字典对象:
print(key, 对象[key])
for key in d:
print(key, d[key]
for key in d.keys():
print(key, d.get(key))
for key, value in d.items():
print(key, value)
for (key, value) in d.items():
print(key, value)
for item in d.items():
print(item[0], item[1])
注意:不可变数据,如果包含了可变对象,该部分是可以变化的,如:
t = (1,2,2,43,45,[1,3,4,54])
t[5].append(1203)