关于数组类型,有过编程基础的都知道是怎么回事儿,最为代表的其实就是JOSN格式的数据了,在python中定义数组,其实就是和JS中可以说一摸一样,如:
arr = []
print(type(arr))
我先用 type() 方法判断一下变量 arr 的类型,打印出来了是
list 语义话的意思其实就是列表或者说数组集合,其实数组里面有好多种操作,如:
1、创建数组
2、查询数组
3、数组切片
4、数组增加
5、数组修改
6、数组删除
7、数组排序
8、数组拼接
创建数组
创建数组的方式有很多种,第一种:
arr = []
这是创建的一个空数组,里面没有任何数据
第二种:
arr = ['张三','李四','王五','赵六']
这是赋值的情况下创建的,一创建里面就已经有了数据
第三种:
arr = list()
这一种比较特别了,如上方第一个演示,我用 type() 操作符判断数组类型打印出来的就是 list 类型,所以这种方式和 js 里面的构造函数比较类似
查询数组
查询数组其实就是查询某个元素在那个位置,可以通过下标查询得到值,也可以通过字符串查询出下标,还可以统计指定元素的个数
下标查询如:
arr = ['张三','李四','王五','赵六']
arr[0] #通过索引值下标查询,0 代表第一个,等于 '张三'
arr[-1] #从右往左查询,-1 代表最后一个,以此类推,等于 '赵六'
在数组里面,python提供了一个操作方法,可以直接返回出对应值的下标,如:
arr = ['张三','李四','王五','赵六']
arr.index('张三') #返回出下标 0
arr.index('李四') #返回出下标 1
arr.index('王五') #返回出下标 2
arr.index('赵六') #返回出下标 3
如上方所示,index()可以找到对应值的下标,但是如果有多个一样的值,index()默认查找到第一个就不会往下继续查找了,如:
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr.index('5') #返回出来的值等于 4 ,之后他就不会往下继续匹配了,默认匹配到第一个值后就会停止,不会往下走了
如上方index()方法,匹配到第一个值后就不会往下继续匹配了,如果我需要知道有多少个相同的值,那么就要换一个方法了,python还提供了一个方法count(),如:
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr.counr('1') #返回出来的值是 3 ,代表这个数组中有三个相同的字符串 '1'
数组切片
数组切片其实就是通过下标自定义去除从多少到多少的元素,如:
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[0:5] #返回的其实就是['1','2','3','4']
0 代表的就是第一个,5 代表的就是第五个前面的一个,默认都是顾头不顾尾。
关于数组切片还有几个比较好的实例,如:
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[-5:-1] #得出结果为:['9', '1', '6', '7'],切片必须从左往右切,所以是 [-5:-1]
arr[:-1] #得出的结果是整个数组,第一个默认不写的话取之是从第一个开始取
arr[0:] #得出的结果是整个数组,最后一个默认不写的话取之是倒数第一个 -1
arr[:] #得出的结果是整个数组,第一个默认不写代表第一个,最后一个默认不写代表最后一个
上面的数组切片只是基础的切片的几种用法,如果我要把数组里面的值隔一个取一个取出来,并且组合成一个新的数组,那么这种操作,我还可以用上面的方法操作,如:
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[0:-1:2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
arr[:-1:2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
arr[::2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
可以看到,我在后面加了一个:2,这样就是隔一个取一个,如果把2写成1的话,那么就是默认全部取出来,隔两个写3以此类推。
数组增加
关于数组增加,在 python 里面有两个方法,一个数组追加,一个是自定义下标插入
数组追加:append()
自定义下标插入:insert(下标,数据)
数组追加:
arr = ['1','2','3']
arr.append('123')
print(arr)
打印出来的是:['1','2','3','123']
自定义下标插入:
arr = ['1','2','3']
arr.insert(0,'123123123')
print(arr)
打印出来的结果为:['123123123','1','2','3']
数组修改
其实数组修改,就是重新赋值,和清除一个变量的值重新赋值一样,如:
arr = ['1','2','3']
arr[0] = '312'
print(arr)
打印出来的结果为:['312','2','3']
如上方所示,我是单个修改,如果我要集体修改好几个元素其实也可以,如:
arr = ['1','2','3','4']
arr[0:3] = '6789'
print(arr)
得出的结果是:['6','7','8','9','4'],至于为什么是这个结果,那是因为他会把字符串全部解析拆分出来往数组里面插入,如果修改只是修改了三个但实际上我有四个字符串,他会全部往里面添加,后面的数据则会往后递增,所以'4'到了第五个字符串的位子上
数组删除
删除数组中的某一个元素在 python 中提供了好几种方法如:
删除最后一个元素:pop()
删除从左边查找到的第一个元素:remove()
全局删除指定的元素:del
删除最后一个元素:
arr = ['1','2','3','4']
arr.pop()
print(arr)
得到的结果为:['1','2','3']
删除从左边查找到的第一个元素:
arr = ['1','2','3','4']
arr.remove('2')
print(arr)
得到的结果为:['1','3','4']
全局删除指定的元素:
arr = ['1','2','3','4']
del arr[0]
print(arr)
得到的结果为:['2','3','4']
del 除了可以单独删除还可以切片删除多个元素,如:
arr = ['1','2','3','4']
del arr[:2]
print(arr)
得到的结果为:['3','4']
数组排序
数组排序完全按照 ASCII 码来排序,python 提供了两个方法,一个是正序,一个是反序,如:
sort() 正序
reverse() 反序
数组排序是同一个类型的数组进行排序,如:
arr = ['f','a','z','g','j']
arr.sort()
print(arr)
打印出来的结果:['a','f','g','j','z']
换一种格式如果我用数字类型来排序:
arr = [1,8,3,0,6]
arr.sort()
print(arr)
打印出来的结果:[0,1,3,6,8]
再来一种字符串类型的数字,和字符串英文,并且加上大小写,如:
arr = ['1','a','D','A','5','Z','s']
arr.sort()
print(arr)
打印出来的结果:['1','5','A','D','Z','a','s'],可以看到字符串数字在第一个,大写字母第二个,小写字母第三个。
再换最后一种,不同类型的字符串数字,如:
arr = [1,'a','D','A',5,'Z','s']
arr.sort()
print(arr)
运行结果报错了如下:
所以不同类型不能放到一起排序。
以上排序方法实例全部由正序排序,反序则是正序的相反,这里就不做演示了,请自行测试反序 reverse()
数组拼接
数组拼接其实就是把两个数组编程一个数字,可以用加法运算符 + ,也可以用 python 提供的另一个方法 extend(),如:
a = ['1','2','3','4','5']
b = ['a','b','c','d','e']
a += b
print(a)
输出结果为:['1','2','3','4','5','a','b','c','d','e']
第二种:
a = ['1','2','3','4','5']
b = ['a','b','c','d','e']
a.extend(b)
print(a)
输出结果同上:['1','2','3','4','5','a','b','c','d','e']
清空整个数组
clear()
a = ['1','2','3','4','5']
a.clear()
print(a)
输出结果为:[],等于整个数组都清空了
拷贝数组
拷贝整个数组,也就是复制整个数组,方法为:copy(),如:
a = ['1','2','3','4','5']
b = a.copy()
print(b)
打印结果为:['1','2','3','4','5']
切记,不要直接用 等于号 复制,因为其中一个改变了另外一个也会跟着改变,如:
a = ['1','2','3','4','5']
b = a
b[0]='100'
print(a)
打印结果如下:['100','2','3','4','5']