python语言的类型
python属于解释型语言
源代码(python)<->解释器(逐行解释每一句源代码)<->操作系统<->cpu
java属于编译型语言
源代码(java)->编译器->可执行文件->操作系统<->cpu
python语言数据的基本类型
容易混淆的几种表现形式
元组( ) 和列表[ ] 类似 只是元组不可以修改 这两个有点类似于C语言中的数组
集合 唯一{ } 和字典类似 只是没有values 字典中的key一定是不可变类型 而且字典查找速度快 缺点是占用内存 同样集合中的元素均是不可变的 所以不能有列表
可变序列和不可变序列
可变序列列和不可变序列区分的标准是是否能够对序列进行增、删、改操作;并且,增删改操作后的对象地址不发生改变。能做增删改操作的序列称为可变序列。反之,不能做增删改操作的序列称为不可变序列。
可变序列:列表、字典、集合
不可变序列:数字、字符串、元组
列表
定义
列表(list)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组,专门用来存储一组数据。
#第一种方式
name_list = [] OR name_list = ['tom','jack']
#第二种方式
data_list = list()
ps: 相当于C语言中的数组 只不过C语言的数组存的是同一类型的数据
count
data_list = ['python', 'java', 'python', 'php']
print(data_list.count("python")) #2
索引[] 列表可以用索引来用数据
name_list = ['张三', '李四']
print(name_list[0]) # 张三
print(name_list[1]) # 李四
append(数据) 在末尾插入数据
val_list = ["Web自动化", "UI自动化", "接口自动化"]
val_list.append("APP自动化")
print(val_list)
# ['Web自动化', 'UI自动化', '接口自动化', 'APP自动化']
ps:
可以插入的各种不同类型的数据 比如数字 字典 元组
extend()
使用新的序列来扩展当前序列,需要一个序列作为参数,它会将该序列中的元素添加到当前列表中
stus.extend(['唐僧','白骨精']) 相当于
stus += ['唐僧','白骨精']
clear()
stus = ['孙悟空','猪八戒','沙和尚','唐僧']
stus.clear() #清空序列 []
insert(位置,数据)
abc = [‘yinsheng’, ‘jiayou’, 1111, (11, 22, 33), {‘abc’: 456}]
abc.insert(0,{“key”:1})
print(abc)
#[{‘key’: 1}, ‘yinsheng’, ‘jiayou’, 1111, (11, 22, 33), {‘abc’: 456}]
remove()
# 删除指定值得元素,如果相同值得元素有多个,只会删除第一个
stus = ['孙悟空','猪八戒','沙和尚','唐僧','猪八戒']
stus.remove('猪八戒')
print(stus) #['孙悟空','沙和尚','唐僧','猪八戒']
pop (列表索引号) 删除某个数据
val_list = ["Web自动化", "UI自动化", "接口自动化"]
val = val_list.pop(0)
print(val, val_list)
# web自动化,['UI自动化', '接口自动化']
ps:
不指定位置号 那么默认删除最后一个
排序
reverse() 反转列表
my_list = [10,1,20,3,4,5,0,-2]
print('修改前',my_list) #[10,1,20,3,4,5,0,-2]
my_list.reverse()
print('修改后',my_list) #[-2, 0, 5, 4, 3, 20, 1, 10]
sort() 默认reverse=false
sort(reverse=true) #降序
sort(reverse=false) #升序
val_list = [8, 100, 30, 10, 40, 2]
val_list.sort(reverse=True)
print(val_list) # [100, 40, 30, 10, 8, 2]
val_list.sort()
print(val_list) #[2, 8, 10, 30, 40, 100]
sorted() 临时排序
val_list = [8, 100, 30, 10, 40, 2]
b= sorted(val_list)
print(val_list) #[8, 100, 30, 10, 40, 2]
print(b) #[2, 8, 10, 30, 40, 100]
嵌套
student_list = [["张三", "18", "功能测试"], {"key":1,"key1":2},(11,222,333)]
print(student_list[1]["key1"]) #2
print(student_list[0][1]) # 18
print(student_list[2][1]) #222
元组
ps: 和列表list 几乎差不多 只是不可以修改 但是这个不可以修改指的是指向永远不变
for example
t = ('a', 'b', ['A', 'B'],111,(2,3,4),{"key":1})
t[2][0] = 'x'
t[2][1] = 'y'
t[5]["key"]=2
print(t)
#('a', 'b', ['x', 'y'], 111, (2, 3, 4), {'key': 2})
定义
元组和列表一样,都可用于存储多个数据,不同之处在于元组的元素不能修改
#第一种方式
user_info = () OR name_list = ('zhangsan',18,1.75)
#第二种方式
info_tuple = tuple()
ps:元组中只包含一个元素时,需要在元素后面添加逗号
如 data=(1,)
查(by索引)
tuple1 = (1, 2, 3)
print(tuple1[1]) # 2
count
tuple1 = (1, 2, 3)
print(tuple1.count(3)) # 1
解包
元组的特殊用法: 交换两个变量的值
num1 = 100
num2 = 200
num2,num1 = num1,num2
print(num1) #200
print(num2) #100
ps:
1.在Python中可以使用对应数据个数的变量,获取对应元组数据中的每一个元素
2.在Python中定义多个元素的元组数据时,小括号可以省略
3.借助以上两个特性,可以通过元组快速实现交换两个变量的值
解包
my_tuple = 10 , 20 , 30 , 40
a , b , *c = my_tuple
print(a,b,c) #10 20 [30, 40]
a , *b , c = my_tuple
print(a,b,c) #10 [20, 30] 40
*a , b , c = my_tuple
print(a,b,c) #[10, 20] 30 40
注意
ps:
# 当元组不是空元组时,括号可以省略
# 如果元组不是空元组,它里边至少要有一个,