Task04:列表
程序员文章站
2024-03-15 23:05:18
...
思维导图
程序练习
1.列表创建部分
#普通列表的创建
x1=[1,2,3,4]
#利用range创建列表,就用的是list
x2=list(range(10))
x3=list(range(1,11,2))
#range是自0 开始的左闭右开的情况
#利用推导式创建
x=[-4,-2,0,2,4]
y=[a*2 for a in x]
print(y)
x=[i**2 for i in range(1,10)]
print(x)
x=[(i,i**2) for i in range(5)]
print(x)
x=[i for i in range(100) if (i%2)!=0 and (i %3)==0]
print(x)
a=[(i,j) for i in range(0,3) for j in range(0,3)]
print(a)
x=[[i,j] for i in range(0,3) for j in range(0,3)]
print(x)
x[0][0]=10
print(x)
a=[(i,j) for i in range(0,3) if i <1 for j in range(0,3) if j>1]
print(a)
#创建4*3的二维数组
#直接创建
x=[[1,2,3],[2,3,4],[3,4,5],[4,5,6]]
print(x,type(x))
for i in x:
print(i,type(i))
x=[[2 for col in range(3)] for row in range(4)]
print(x,type(x))
x[0][1]=1 #前面的[0]是行坐标,后面的1是列坐标
print(x,type(x))
mix=[1,'logo',3.13,[1,2,3]]
print(mix)
2.列表是可变换的一些函数
x=['Mon','Tue','Wed','Thur','Fri']
x.append(['Sat','Sun'])
print(x)
print(len(x))
x1=['Mon','Tue','Wed','Thur','Fri']
x1.extend(['Sat','Sun'])
print(x1)
x2=['Mon','Tue','Wed','Thur','Fri']
x2.insert(2,['sunday','saturaday'])
x2.remove('Mon')
print(x2)
#del和pop的区别是del删除之后,被删除的元素不能再用,但是pop是可以再调用的。
x2=['Mon','Tue','Wed','Thur','Fri']
x2.insert(2,['sunday','saturaday'])
y=x2.pop()
print(x2)
print(y)
#list.pop移除最后一个元素,并返回该元素的值
#remove是指定具体要删的元素,后者是指定一个索引
#start:stop:step 若step=-1,则是列表反向排列
week=['Mon','Tue','Wed','Thur','Fri','Sat','Sun']
print(week[::-1])
#提供了一种反向输出的思路
3.浅拷贝和拷贝
浅拷贝只是对数据进行复制,后期如果原列表发生变化,几乎不影响浅拷贝的结果,如果是list1=list,那么在list排序的时候,list1也会发生变化。
list1=[123,456,789,213]
print(list1)
list2=list1
list3=list1[:]#浅拷贝
print(list2)
print(list3)
list1.sort()
print(list2)
print(list3)
#最终的结果就是对原始的list进行操作时并不会影响浅拷贝的结果
#用remove也可以得到相同的结果
list1=[123,456,789,213]
print(list1)
list2=list1
list3=list1[:]#浅拷贝
print(list2)
print(list3)
list1.remove(123)
print(list2)
print(list3)
list1=[123,456,789,213]
print(list1)
list2=list1
list3=list1[:]#浅拷贝
print(list2)
print(list3)
list1[0]=111#重新取值,对浅拷贝的结果没影响
print(list2)
print(list3)
list1=[[123,456],[789,213]]
list2=list1
list3=list1[:]#浅拷贝
list1[0][0]=111
list1.remove([789,213])
print(list2)
print(list3)
#remove对浅拷贝不起作用,但是重新命名会有作用
4.索引、排序等
list1=[123,456]*5
print(list)
print(list1.index(123))
print(list1.index(123,1))
print(list1.index(123,3,7))#在3,7位置之间找符合条件的123
#index是找出第一个匹配项的索引位置
x=[123,456,789]
x.reverse()
print(x[::-1])
print(x)
#反向输出和反向列表中的元素是不同的,一个只改变输出不改变原有的list
x=[123,456,789,213]
x.sort()
print(x)
x.sort(reverse=True)
print(x)
def takeSecond(elem):
return elem[1]
x=[(2,2),(3,4),(4,1),(1,3)]
x.sort(key=takeSecond)
print(x)
x.sort(key=lambda a:a[0])
print(x)
#lamnda函数再补充说明
作业
3.山脉数组的峰顶索引
leetcode852题:
from typing import List
class Solution:
def peakIndexInMountainArray(self, A: List[int]) -> int:
a=A.index(max(A))
for i in range(a):
if A[i]>=A[i+1]:
return False
for i in range(a,len(A)-1):
if A[i]<=A[i+1]:
return False
return True
if __name__ == '__main__':
solution = Solution()
answer = solution.peakIndexInMountainArray([0, 1, 2, 1, 0])
print(answer)
总结
在学习列表的过程中,因为列表本身有索引,所以可以在循环和条件上进行处理,有些题目需要较强的逻辑性,仍需多多练习。
推荐阅读
-
Task04:列表
-
dropdownlist中既可以输入又可以下拉列表 博客分类: ASP.NET ASP.NET
-
如何将数据库中存的树转化为树形列表(以easyui的tree为例)
-
python生成1到10的列表_[Python] 列表推导式和生成器表达式
-
显示所有应用程序列表,点击进入 博客分类: android android应用连接跳转
-
list control单击列表头排序(MFC)
-
c++中关于初始化型参列表的一些问题
-
英语听力 : 走遍美国 mp3 下载列表 博客分类: 英语 英语
-
英语听力 : 走遍美国 mp3 下载列表 博客分类: 英语 英语
-
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)