欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Task04:列表

程序员文章站 2024-03-15 23:05:18
...

思维导图

Task04:列表

程序练习

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)

总结

在学习列表的过程中,因为列表本身有索引,所以可以在循环和条件上进行处理,有些题目需要较强的逻辑性,仍需多多练习。

相关标签: 组队学习