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))
相关推荐
前鼻音太阳熊12 分钟前
【数据结构和算法】-布隆过滤器
数据结构·算法
kitesxian13 分钟前
Leetcode160.相交链表
数据结构·c++·链表
【0931】18 分钟前
leetcode160题相交链表
数据结构·链表
彭彭不吃虫子29 分钟前
【字符串】给定一个字符串 text 和字符串列表 words,返回 words 中每个单词在 text 中的位置(要求最终的位置从小到大进行排序)
开发语言·数据结构·python
煎饼小狗37 分钟前
Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)
数据结构·数据库·经验分享·redis·缓存·list
北国13742 分钟前
蓝桥杯-顺子日期
java·蓝桥杯
未知陨落1 小时前
数据结构——红黑树
开发语言·数据结构·c++·红黑树
Wils0nEdwards1 小时前
Leetcode 汇总区间
算法·leetcode·职场和发展
7yewh1 小时前
LeetCode 力扣 热题 100道(四)寻找两个正序数组的中位数(C++)
开发语言·数据结构·c++·算法·leetcode
Keven-zhou1 小时前
P10901 [蓝桥杯 2024 省 C] 封闭图形个数
数据结构·c++·算法·蓝桥杯