Pyhon基础数据结构(列表)【蓝桥杯】
a = [1,2,3,4,5] a.reverse() print("a = ",a) a.reverse() print("a = ",a)
# 列表
列表(list)有由一系列按照特定顺序排序的元素组成
列表是有顺序的,访问任何元素需要通过“下标访问”
所谓“下标”就是指元素在列表从左往右为第几个,下标从0开始。
下标只能为【-n,n-1】,分为【0,n-1】(顺数第几个)、【-n,-1】(倒数第几个)
a = [‘apple’,‘banana’,‘cat’,‘dog’]
列表–访问列表
列表的每一个元素均可以像其他变量一样进行使用
赋值、加减乘除各种运算、打印等
a = [123,456,789]
print(a[0]+a[1])
print(a[2]//a[0])
a[0] = 1
print("a = ",a)
a[1] = 5
print("a = ",a)
列表–添加元素
在末尾添加单个元素:
append(x) :列表a末尾添加元素x。
a = []
a.append(123)
a.append("Hello")
a.append(3.14)
print("a = ",a,a)
a = [1,2,3,4,5]
a.append(6)
print("a = ",a)
a.expend(x):列表a末尾添加x;x为迭代对象,包括列表、元组、字符串等,不可为单个数字.
append是添加单个元素到末尾
expend是添加个多个元素到末尾
#append()
a = [0,1,2]
a.append([4,5,6])
print("a = ",a)
#extend()
a = [0,1,2]
a.extend([4,5,6])
print("a = ",a)
输出
a = [0, 1, 2, [4, 5, 6]]
a = [0, 1, 2, 4, 5, 6]
a.insert(idx,x):列表a在下标为idx插入元素x,原来下标大于等于idx的元素往右移动一个位置
a = ['apple','banana','cat','dog']
a.insert(0,'Apple')
a.insert(1,'Banana')
print("a = ",a)
输出
a = ['Apple', 'Banana', 'apple', 'banana', 'cat', 'dog']
列表–删除元素
del a[idx]:删除列表a中的下标为idx的元素
a = ['apple','banana','cat','dog']
del a[3]
print("a = ",a)
输出
a = ['apple', 'banana', 'cat']
pop(idx):删除列表a中为idx的元素,删除元素里的最后一个
#列表自带的删除
x = a.pop(1)
print("x = ",x)
print("a = ",a)
输出
x = banana
a = ['apple', 'cat', 'dog']
#利用pop删除元素
a = ['apple','banana','cat','dog']
del_str = a.pop(1)
print("a = ",a)
print("删除的元素为: ",del_str)
#pop不加参数,默认删除最后一个元素
del_str = a.pop()
print("a = ",a)
输出
a = ['apple', 'cat', 'dog']
删除的元素为: banana
a = ['apple', 'cat']
a.remove(x):删除列表a中值为x的第一个元素
#remove利用删除元素
a = ['apple','banana','cat','dog']
del_str = 'apple'
a.remove(del_str)
print("a = ",a)
输出
a = ['banana', 'cat', 'dog']
如何判断列表a中存在x
a = ['apple','banana','cat','dog']
if 'apple' in a:
print('不存在')
else:
print('存在')
输出
不存在
a = ['apple','banana','cat','dog']
if 'apple' not in a:
print('不存在')
else:
print('存在')
输出
存在
如何删除列表所有的x
a = [1,2,3,3,3,3,4,5,5,1323,32,23,4]
x = 2
while x in a:
a.remove(x)
print("a = ",a)
输出
a = [1, 3, 3, 3, 3, 4, 5, 5, 1323, 32, 23, 4]
列表–查找元素
查找元素x
如何隔统计apple删除
a = ['apple','banana','cat','apple']
x = 'apple'
c = a.count(x)
print("c = ",c)
for i in range(c):
a.remove(x)
print("a = ",a)
输出
c = 2
a = ['banana', 'cat']
下标找元素
a = ['apple','banana','cat','dog','cat','apple']
print(a.count('apple'))
print(a.index('cat'))
print(a.index('cat',3))
输出
2
2
4
列表–翻转
a = [1,2,3,4,5]
a.reverse()
print("a = ",a)
a.reverse()
print("a = ",a)
输出
a = [5, 4, 3, 2, 1]
a = [1, 2, 3, 4, 5]
列表–求出列表长度
a = [1,2,3,4,5]
#输出长度为5
print(len(a))
a.append(6)
a.append(7)
print(len(a))
a.pop(4)
print(len(a))
print(a)
输出
5
7
6
[1, 2, 3, 4, 6, 7]
列表–小结
操作列表–遍历整个列表
利用for循环遍历列表
a = ['apple','banana','cat','apple']
x = 'apple'
c = a.count(x)
print("c = ",c)
for i in range(c):
a.remove(x)
print("a = ",a)
输出
c = 2
a = ['banana', 'cat']
a = ['banana','apple','cat','dog','apple','banana']
ans = ''
for x in a:
ans = ans +' '+ x
print(ans)
输出
banana apple cat dog apple banana
enumerate(a)
将列表a每个元素和对应的下标组合为一个带索引的序列,下标默认从0开始,遍历的时候同步遍历下标和值。
#enumerate(a) = [(0,'apple'),(1,'banana'),(2,'cat'),(3,'dog'),(4,'apple'),(5,'banana')] #隐藏起来了
a = ['apple','banana','cat','dog','apple','banana']
for idx,x in enumerate(a):
print(idx,x)
输出
0 apple
1 banana
2 cat
3 dog
4 apple
5 banana
操作列表–创建数值列表
利用range函数+list
a = list(range(10))
print(a)
b = list(range(0,10,3))
print(b)
c = list(range(10,-1,-2))
print(c)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
[10, 8, 6, 4, 2, 0]
操作列表–列表操作符
+:连接两个列表
a*x:a = list,x是int,构成一个新列表,其内容为a复制x次
a = list(range(10))
print(a)
b = list(range(0,10,3))
print(b)
c = a + b
print("c=",c)
d = a*3
c = list(range(10,-1,-2))
print(c)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
c= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3, 6, 9]
[10, 8, 6, 4, 2, 0]
操作列表–内置函数
a = [1,2,3,4,5]
print("sum(a)=",sum(a))
print("max(a)=",max(a))
print("min(a)=",min(a))
输出
sum(a)= 15
max(a)= 5
min(a)= 1
***操作列表–列表解析式子
列表解析式:可以基于已有列表生成相关的新列表
[expression for menber in iterable]
对于迭代对象iterable的每个元素member,都执行expression构成新的列表
print(list(range(11)))
a = [x**2 for x in range(11)]
print(a)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
二
a = [1,2,3,4]
b = [3,4,5,6]
#c = a*b
c = [a[i]*b[i]for i in range(4)]
print(c)
输出
[3, 8, 15, 24]
暴力
a = [1,2,3,4]
b = [3,4,5,6]
c = []
for i in range(4):
c.append(a[i]*b[i])
print(c)
输出
[3, 8, 15, 24]
三
输出
a = [x**2 for x in range(11)]
print(a)
a = [x**2 for x in range(11) if x%2==0]
print(a)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0, 4, 16, 36, 64, 100]
***操作列表–列表切片
切片:列表的部分元素组成的新列表
a[strat🔚step]
start:切片的下标起点(包含起点),默认为0
end:切片的下标终点(不包含终点),默认为列表长度
step:切片的步长,默认为1
range用法基本类似,只是range是数字序列,而切片面向的是任意list
a = ["apple","banana","cat","dog",'dog']
#切片[2,4],步长为1
b = a[2:4]
#切片[0,n],步长为2
c = a[::2]
#前三个元素
d = a[:3]
#后三个元素
e = a[-3:]
print('b = ',b)
print('c = ',c)
print('d = ',d)
print('e = ',e)
输出
b = ['cat', 'dog']
c = ['apple', 'cat', 'dog']
d = ['apple', 'banana', 'cat']
e = ['cat', 'dog', 'dog']
操作列表–小结
元组
元组:与列表类似,是有一系列按照额定顺讯排序的元素组成
用()创建,或者用tuple创建
与List区别
List是可修改的序列,而元组的不可修改的,即创建无法修改当前元组
a = ('apple','banana','cat','dog')
print(type(a),a)
b = ['dog','egg']
c = tuple(b)
print(type(c),c)
输出
<class 'tuple'> ('apple', 'banana', 'cat', 'dog')
<class 'tuple'> ('dog', 'egg')
习题
import os
import sys
# 请在此输入您的代码
lis = [int(input()) for i in range(int(input()))]
jiege = 0
youxiu = 0
for i in lis:
if i >= 60:
jiege +=1
if i >=85:
youxiu +=1
else:
continue
print("{}%".format(round(jiege/len(lis)*100)))
print("{}%".format(round(youxiu/len(lis)*100)))
习题二
import os
import sys
# 请在此输入您的代码
n = int(input())
m = []
for i in range(n):
m.append(int(input()))
print(max(m))
print(min(m))
print("{:.2f}".format(sum(m)/n))