Python3基本数据类型之列表 (2)

start位置处的元素在查找的范围内,end位置处的元素不在查找的范围内。

#demo7: nums = [1,2,3,4,1,2,10] print(nums.index(2),nums.index(2,1),nums.index(2,2,6)) # print(nums.index(2,2,5)) #报错,因为元素不存在,不在查找的范围内 #output: 1 1 5

==count(x)==

返回元素x在列表中一共出现的次数,如果列表中不存在x,返回0

#demo8: nums = [1,2,1,2,5,6,1,2] print(nums.count(1),nums.count(8)) #output: 3 0

==copy()==

Return a shallow copy of the list. Equivalent to nums[:]

Python3中copy涉及的内容较多,现简单介绍之,后续再深入学习。

#demo9: nums = [1,2,3] new_nums = nums.copy() print(new_nums) #output: [1,2,3]

==sort(key=None, reverse=False)==

sort不返回任何参数,只对列表做排序处理。key和reverse是可选参数。

默认sort对列表中元素做升序排列,即reverse=False,若指定reverse=True,对列表元素做降序排列。

默认sorts使用元素中的第一个元素做排序的比较对象,也可以使用key参数指定比较的对象,见demo12

#demo10: nums = [(3,2),(6,9), (5,8),(4,5),(1,6)] nums.sort() print(nums) #output: [(1, 6), (3, 2), (4, 5), (5, 8), (6, 9)] #即 按元组的第一个元素升序排列,默认reverse=False #demo11: nums = [(3,2),(6,9), (5,8),(4,5),(1,6)] nums.sort(reverse=True) print(nums) #output: [(6, 9), (5, 8), (4, 5), (3, 2), (1, 6)] #即 按元组的第一个元素降序排列啦,激活reversr=True,降序啦 #demo11: def sort_second_item(ele): return ele[1] nums = [(3,2),(6,9), (5,8),(4,5),(1,6)] nums.sort(key=sort_second_item, reverse=True) print(nums) #output: [(6, 9), (5, 8), (1, 6), (4, 5), (3, 2)] #即 按元组的第二个元素降序排列啦,激活key,使用自定义排序对象

==reverse()==

列表反转,仅反转列表无排序功能

nums = [1,3,2,6,9,4,3] nums.reverse() print(nums) #output: [3, 4, 9, 6, 2, 3, 1]

总结:append、reverse、sort、remove等仅修改列表,无返回值,但默认是返回None

3、列表高级用法

==1、像栈(Stacks)一样使用列表==

“后进-先出(last-in, first-out)”

append()和pop()

#demo1: nums = [1,2,3,4] nums.append(5) nums.append(6) n1 = nums.pop() n2 = nums.pop() print(n1, n2) #output: 6 5

==2、列表解析==

列表解析是用来生成列表的,这种列表内的元素具有某种内在规律。

#demo2: nums = [x*2 for x in range(10)] print(nums) #output: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

具体用法是:[表达式 for语句 if语句]

表达式如果是元组,则必须用小括号括起来;字典则大括号

可以有多个for 语句和 多个if 语句

#demo3: nums = [-2, 0, 4] print([x for x in nums if x>=0]) print([abs(x) for x in nums]) print([{x:x*2} for x in nums]) print([(x,y) for x in nums for y in nums if x>y if x>0]) #output: [0, 4] [2, 0, 4] [{-2: -4}, {0: 0}, {4: 8}] [(4, -2), (4, 0)]

==3、矩阵转置==

把下面3x4矩阵转置

matrix = [ [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ] #demo4: tran_matrix = [ [row[i] for row in martix] for i in range(4) ] print(tran_matrix) #output: [[1,5,9],[2,6,10],[3,7,11],[4,8,12]] 解读: 先看 for i in range(4) 指的是四次循环生成新矩阵的4行 再看,当i=0时:内层循环 for row in matrix 这个循环有三次,因为len(matrix)=3,即代表新矩阵矩阵每行的三个数 当row=matrix[0],即row=[1,2,3,4],这是row[i]即row[0]=1 当row=matrix[1],即row=[5,6,7,8],这是row[i]即row[0]=5 当row=matrix[2],即row=[9,10,11,12],这是row[i]即row[0]=9 得到[1,5,9], 内层循环结束,外层循环接着开始,i=1 当row=matrix[0],即row=[1,2,3,4],这是row[1]即row[0]=2 当row=matrix[1],即row=[5,6,7,8],这是row[1]即row[0]=6 当row=matrix[2],即row=[9,10,11,12],这是row[1]即row[0]=10 得到[2,6,10], 依次类推......

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjsfp.html