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']

列表--访问列表

列表的每一个元素均可以像其他变量一样进行使用
赋值、加减乘除各种运算、打印等

csharp 复制代码
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。

csharp 复制代码
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是添加个多个元素到末尾

csharp 复制代码
#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)

输出

csharp 复制代码
a =  [0, 1, 2, [4, 5, 6]]
a =  [0, 1, 2, 4, 5, 6]

a.insert(idx,x):列表a在下标为idx插入元素x,原来下标大于等于idx的元素往右移动一个位置

csharp 复制代码
a = ['apple','banana','cat','dog']
a.insert(0,'Apple')
a.insert(1,'Banana')
print("a = ",a)

输出

csharp 复制代码
a =  ['Apple', 'Banana', 'apple', 'banana', 'cat', 'dog']

列表--删除元素

del a[idx]:删除列表a中的下标为idx的元素

csharp 复制代码
a = ['apple','banana','cat','dog']
del a[3]
print("a = ",a)

输出

csharp 复制代码
a =  ['apple', 'banana', 'cat']

pop(idx):删除列表a中为idx的元素,删除元素里的最后一个

csharp 复制代码
#列表自带的删除
x = a.pop(1)
print("x = ",x)
print("a = ",a)

输出

csharp 复制代码
x =  banana
a =  ['apple', 'cat', 'dog']
python 复制代码
#利用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)

输出

python 复制代码
a =  ['apple', 'cat', 'dog']
删除的元素为:  banana
a =  ['apple', 'cat']

a.remove(x):删除列表a中值为x的第一个元素

csharp 复制代码
#remove利用删除元素
a = ['apple','banana','cat','dog']
del_str = 'apple'
a.remove(del_str)
print("a = ",a)

输出

csharp 复制代码
a =  ['banana', 'cat', 'dog']

如何判断列表a中存在x

csharp 复制代码
a = ['apple','banana','cat','dog']
if 'apple' in a:
    print('不存在')
else:
    print('存在')

输出

csharp 复制代码
不存在
python 复制代码
a = ['apple','banana','cat','dog']
if 'apple' not in a:
    print('不存在')
else:
    print('存在')

输出

python 复制代码
存在

如何删除列表所有的x

python 复制代码
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)

输出

python 复制代码
a =  [1, 3, 3, 3, 3, 4, 5, 5, 1323, 32, 23, 4]

列表--查找元素

查找元素x

如何隔统计apple删除

python 复制代码
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)

输出

python 复制代码
c =  2
a =  ['banana', 'cat']

下标找元素

python 复制代码
a = ['apple','banana','cat','dog','cat','apple']
print(a.count('apple'))
print(a.index('cat'))
print(a.index('cat',3))

输出

python 复制代码
2
2
4

列表--翻转

python 复制代码
a = [1,2,3,4,5]
a.reverse()
print("a = ",a)
a.reverse()
print("a = ",a)

输出

python 复制代码
a =  [5, 4, 3, 2, 1]
a =  [1, 2, 3, 4, 5]

列表--求出列表长度

python 复制代码
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)

输出

python 复制代码
5
7
6
[1, 2, 3, 4, 6, 7]

列表--小结

操作列表--遍历整个列表

利用for循环遍历列表

python 复制代码
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)

输出

python 复制代码
c =  2
a =  ['banana', 'cat']
python 复制代码
a = ['banana','apple','cat','dog','apple','banana']
ans = ''
for x in a:
    ans = ans +' '+ x
print(ans)

输出

python 复制代码
 banana apple cat dog apple banana

enumerate(a)

将列表a每个元素和对应的下标组合为一个带索引的序列,下标默认从0开始,遍历的时候同步遍历下标和值。

python 复制代码
#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)

输出

python 复制代码
0 apple
1 banana
2 cat
3 dog
4 apple
5 banana

操作列表--创建数值列表

利用range函数+list

python 复制代码
a = list(range(10))
print(a)

b = list(range(0,10,3))
print(b)

c = list(range(10,-1,-2))
print(c)

输出

python 复制代码
[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次

python 复制代码
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)

输出

python 复制代码
[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]

操作列表--内置函数

python 复制代码
a = [1,2,3,4,5]
print("sum(a)=",sum(a))
print("max(a)=",max(a))
print("min(a)=",min(a))

输出

python 复制代码
sum(a)= 15
max(a)= 5
min(a)= 1

***操作列表--列表解析式子

列表解析式:可以基于已有列表生成相关的新列表

python 复制代码
[expression for menber in iterable]

对于迭代对象iterable的每个元素member,都执行expression构成新的列表

python 复制代码
print(list(range(11)))
a = [x**2 for x in range(11)]
print(a)

输出

python 复制代码
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

python 复制代码
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)

输出

python 复制代码
[3, 8, 15, 24]

暴力

python 复制代码
a = [1,2,3,4]
b = [3,4,5,6]
c = []
for i in range(4):
    c.append(a[i]*b[i])
print(c)

输出

python 复制代码
[3, 8, 15, 24]

输出

python 复制代码
a = [x**2 for x in range(11)]
print(a)

a = [x**2 for x in range(11) if x%2==0]
print(a)
python 复制代码
[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

python 复制代码
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)

输出

python 复制代码
b =  ['cat', 'dog']
c =  ['apple', 'cat', 'dog']
d =  ['apple', 'banana', 'cat']
e =  ['cat', 'dog', 'dog']

操作列表--小结

元组

元组:与列表类似,是有一系列按照额定顺讯排序的元素组成
用()创建,或者用tuple创建
与List区别
List是可修改的序列,而元组的不可修改的,即创建无法修改当前元组

python 复制代码
a = ('apple','banana','cat','dog')
print(type(a),a)
b = ['dog','egg']
c = tuple(b)
print(type(c),c)

输出

python 复制代码
<class 'tuple'> ('apple', 'banana', 'cat', 'dog')
<class 'tuple'> ('dog', 'egg')

习题


python 复制代码
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)))

习题二


c 复制代码
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))
相关推荐
XiaoFan01213 分钟前
将有向工作流图转为结构树的实现
java·数据结构·决策树
睡一觉就好了。25 分钟前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
齐落山大勇30 分钟前
数据结构——单链表
数据结构
皮皮哎哟1 小时前
深入浅出双向链表与Linux内核链表 附数组链表核心区别解析
c语言·数据结构·内核链表·双向链表·循环链表·数组和链表的区别
wWYy.2 小时前
指针与引用区别
数据结构
VT.馒头2 小时前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
历程里程碑2 小时前
Linux 17 程序地址空间
linux·运维·服务器·开发语言·数据结构·笔记·排序算法
-dzk-3 小时前
【代码随想录】LC 203.移除链表元素
c语言·数据结构·c++·算法·链表
齐落山大勇3 小时前
数据结构——栈与队列
数据结构
毅炼3 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先