计算机在处理各种数值、文本、图形、音频、视频、网页等数据时,不同的数据,需要定义不同的数据类型。这篇随笔主要记录整型、浮点型、布尔类型、列表及元组。
一、整型和浮点型
1、整型
也就是整数类型,python3中都是int类型,没有long类型。有正整数、负整数和0。
1 a = 1.2 2 b = int(a) 3 print(int(b))
2、浮点型
也就是小数类型,float类型
二、布尔类型
布尔类型就是真和假,只有两种:Ture和False。
除了True和False还有0和1,非0即真。
Python中True是关键字,必须大写T,否则是普通变量不是布尔值
1 a = 3 2 b = 6 3 print(a>b)
三、列表和列表操作
1、列表定义
(1) 它比字符串取值方便
例如存一个班级的人的名字,用字符串存的话,取值非常麻烦,所以有了列表。列表在开发过程中,是最常用的数据类型之一。
(2) 列表,list,数组,array都是列表,用[]定义即可
1 list1 = [1,2,3,4] #一个普通数组 2 list2 = ['小白','小黑','小黄',['小蓝',20]] #二维数组 3 list3 = ['name','sex',['addr',['天津,河北']]] #三维数组
(3) 下标,索引,角标,编号都是下标,通过下标访问列表中的元素,下标从0开始。字符串也有下标和列表对应。
(4) 最前面一个元素的下标是0,最后面一个元素的下标是-1
2、列表操作
(1) 增加:append,insert
1 city = ['北京','上海','广州'] 2 city.append('深圳') #从最后面开始增加 3 city.insert(1,'南京') #从指定位置增加,这个1代表下标,不能添加负数位置(-1) 4 print(city)
(2) 删除:pop,remove,clear,del
1 city = ['北京','上海','广州','深圳'] 2 city.pop() #不传入下标的话,删除最后一个值,传入下标删除指定位置的值 3 city.remove('上海') #删除指定的值 4 del city[0] #删除指定位置的值 5 city.clear() #清空该列表 6 print(city)
(3) 修改:直接对指定位置元素进行赋值
1 city = ['北京','上海','广州'] 2 city[2] = '深圳' #修改指定位置的值 3 #修改的时候如果指定的下标不存在,会报错 4 print(city)
(4) 查找:list[index]
1 city = ['北京','上海','北京','深圳'] 2 print(city[0]) #查找指定位置的元素 3 print(city[-1]) #-1代表最后一个元素
3.列表内置方法
取索引 index(object),取元素出现次数 count(object)
1 city = ['北京','上海','北京','深圳'] 2 print(city.index('深圳')) #获取元素的下标,找不到元素会报错 3 print(city.count('北京')) #查看元素在list里面出现的多少次
排序 sort(),扩展 extend(object),反转 reverse()
需要注意的是排序、扩展、反转均会改变原列表的值。没有返回值,先使用方法,再去打印原列表查看结果
1 city = ['北京','上海','北京','深圳'] 2 city.sort() #升序排序,根据ASCII码排序,会改变原数组的值 3 print(city) 4 city.sort(reverse=True) #降序排序 5 print(city) 6 city2 = ['西安','成都'] 7 city.extend(city2) #扩展列表,把city2的值加到city中,会改变原数组的值 8 print(city) 9 city.reverse() 10 print(city) #反转数组,会改变原数组的值
合并及复制列表
1 city = ['北京','上海','北京','深圳'] 2 city2 = ['西安','成都'] 3 print(city + city2) #合并list 4 print(city*3) #复制三次list 5 print('你好'*3) #复制三次字符串
4.多维列表
多维列表同样通过下标来查找、修改
多层嵌套,从最外层一层层取
1 stus = ['小白',['小黑','男'],['小红',['女',['北京',160]]]] 2 print(stus[1][1]) 3 print(stus[2][1][1][0])
5.切片
切片是list取多个值的一种方式,即从第几个元素开始,到第几个元素结束,获取它们之间的值。
格式是city[1:5:2],表示从第二个元素到第四个元素,步长为2。
切片是不包含后面那个元素的,顾头不顾尾,前面下标如果是0的话,可以省略不写即city[:5]
1 names = ['Amy','Andy','Ben','Lily','Kate','John'] 2 print(names[1:4]) #取下标1至4之间值,包括1,不包括4 3 print(names[1:-1]) #取下标1至-1的值,不包括-1,即不包括最后一个元素 4 print(names[:4]) #取下标0至4的值,不包括4,如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写 5 print(names[1:]) #取下标1开始后面的所有元素,如果从某个下标开始取,取到末尾结束,那么末尾的下标可以不写 6 print(names[:]) #取所有
步长默认为1,表示隔多少个元素取一次
1 nums = list(range(1,10)) 2 print(nums) #1-9,共10个数 3 print(nums[::2]) #取所有的元素,然后每隔2个元素取一个 4 #[1, 3, 5, 7, 9] 5 print(nums[1:8:3]) #取第二个元素开始,到第八个结束,隔3个取一次 6 #[2, 5, 8]
步长为正,从左往右边开始取值
步长为负,从右边往左边开始取值
步长为-1,反转list,但不会改变原list值,reverse()会改变原list的值
1 nums = list(range(1,10)) 2 print(nums)#1,2,3,4,5,6,7,8,9 3 print(nums[::-1]) #反转list,但不会改变原来list的值 4 #9,8,7,6,5,4,3,2,1 5 print(nums) #1,2,3,4,5,6,7,8,9 6 nums.reverse() 7 print(nums) #改变了原来的list值 8 #9,8,7,6,5,4,3,2,1
1 nums = list(range(1,10))#1,2,3,4,5,6,7,8,9 2 print(nums[2::-2]) #3,1 3 print(nums[:5:-3]) #9 4 print(nums[1:5:-1]) #为空
切片操作也可以对字符串使用
1 info = '今天天气真好,是不是' 2 print(info[1:4]) #天天气 3 print(info[:5:-1]) #是不是,
6.列表的循环
循环在循环可迭代对象的时候,每次循环的是里面的每一个元素
list和string可循环,int、float不能循环
1 stus = ['Amy','Lily','Ben',[1,2,3]] 2 for name in stus: 3 if type(name) == list: #判断一个变量的类型 4 for i in name: 5 print(i) 6 else: 7 print(name)
四、元组和元组操作
1、元组定义
元组也是一个list,他和list的区别是,元组里面元素无法修改(可以循环、切片、下标取值、但不可以修改值),用()定义,小括号。例如要存数据库的连接信息,这个在程序运行中是不能被修改的,就可以用元组。
1 db = ('192.168.10.1','root','123456',3306,'my_db') #定义元组 2 print(db[1:2]) #切片 3 print(db[0]) #下标取值 4 for i in db: #循环 5 print(i)
如果元组里面 只有一个元素的话,那么你必须在这个元素后面加一个逗号。
1 a = (1) 2 b = (1,) 3 c = (1,2,3) 4 print(type(a)) #<class 'int'> 5 print(type(b)) #<class 'tuple'> 6 print(type(c)) #<class 'tuple'>
2、元组操作
元组只有两个方法,那就是count和index
1 db = ('192.168.10.1','root','123456',3306,'my_db') #定义元组 2 print(db.index('root')) #找到元素的下标 3 print(db.count('192.168.10.1')) #找到元素的个数