1 判断
1,在Python中,find()函数并不是用于列表的搜索函数。find()是字符串类型的方法,用来查找子字符串在父字符串中的位置。
如果你尝试使用find()在列表中查找元素,它会导致错误,
2,字符串和列表都是序列类型。
3,列表lst=[12, -5, -22, -10, -26, 35, 0, 49, 3, -21],则 lst[0:100]的结果是正确的
指定的结束索引大于列表的实际长度,Python 会自动将结束索引限制为列表的最大长度。
4,a = input().split(" ")
for i in a.sort():
这一行运行错误,会返回none
print(i,end=" ")
5,
s2 = " ".join(lst)最后一个数字后面没有空格,也就是用空格将序列里的元素来连接起来
6,删除元素时改变了列表的大小,从而影响了迭代的行为。
lst=[34,6,7,0,0,0,9]
n=0
for i in lst:
if i==0:
lst.remove(i)
n+=1
print(n)
删除元素后会生成新列表新索引
7,
8,
10,
11,集合(set)是 无序的,这意味着集合中的元素没有固定的顺序。每次迭代时,元素的顺序可能不同。因此,虽然集合中包含 {11, 12, 3, 4} 这些元素,但在不同的运行中,迭代的顺序可能会有所不同。
12,
13,
dic={"John" : 15264771766,"Kate" : 13063767486,"Rose" : 15146046882,"Chise" : 13606379542,"Jason" : 13611987725}
reverseDic={v:k for k,v in dic.items()}
print(reverseDic[13063767486])
14,dic1.update(dic2) 会将 dic2 中的所有键值对添加到 dic1 中。
如果 dic2 中的键已经存在于 dic1 中,则会更新该键的值;如果 dic2 中的键在 dic1 中不存在,则会新增该键值对。
15,语句 dic3 = {**dic1, **dic2} 采用了 字典解包 的语法,将 dic1 和 dic2 的键值对合并到一个新的字典 dic3 中。
字典解包的行为是:如果两个字典中有相同的键,那么后面的字典会覆盖前面字典中的值。因此,dic2 中的 ONE 键值会覆盖 dic1 中的 ONE 键值。
2 单选
1, max((3, 5, 1,7, 4)) 即求元组的最大值
2,当我们将字符串 "abcd" 作为参数传递给 list() 时,list() 会将字符串中的每个字符提取出来,并将它们放入一个列表中。
3,range、map、zip、filter、reversed、enumerate等迭代对象具有( )求值的特点。
惰性
4,
A. append()、B. extend() 和 C. insert() 都是列表(list)的方法,不能作用于元组(tuple)对象,因为元组是不可变对象,不能修改其内容。
D. len() 是一个内置函数,可以作用于任何序列类型
5,
大括号默认为字典,set()才能创建集合
6,remove() 是用来删除列表中的元素的,
del删除字典元素或字典
7,D错误
3 多选
1
lst = [1, 2, 3, 4, 5]
lst[1:3] = [10, 20] # 替换索引1到2的元素
print(lst) # 输出: [1, 10, 20, 4, 5]
2,
3,
4 填空
5 编程
1),输入
#中括号建列表和list函数建列表
s=list(map(int,input().split()))
l=[s[i] for i in range(-1,-len(s)-1,-1)]
#逆序输出 开始索引,结束索引还有步长
l=s[::-1]
#逆序输出
s = [l[i] for i in range(len(l)) if l[i] > ans]
s=[i for i in l if i>(sum(l)/len(l))]
l=[i for i in range(m,n+1) if prime(i)]
print(*s, sep=" ", end=" ")
#元素之间用空格分隔,打印结束后不输入换行符而是输出空格·
#map第一个传入int
#列表创建要先声明哪个字母代表元素
2)字符串长度
#把数字转化为字符串可以通过字符串长度len获取数字长度
s=str(int(input()))
sum=0
for i in range(len(s)):
#记得加冒号
sum+=int(s[i])
print("%d %d"%(len(s),sum))
3)ascii
ord() 函数
#转化为ascii
chr()
#转化为字符
if str[i].isupper():
s+=chr(155 - ord(str[i]))
A+Z=155
#所以这样映射
4) 遍历下标
s=input()
n,m=map(str,input().split())
# for i in range(len(s)-1,-1,-1):
for i in range(-1, -len(s)-1, -1):
if(s[i]==n or s[i]==m):
print("%d %s"%(i,s[i]))
5)字符排列
n, m = str(input()), str(input())
# n 和 m 分别存储两个输入的字符串
if sorted(n) == sorted(m):
'''
n.sort() 和 m.sort() 的返回值都是 None,而你在 if 语句中进行的是 None == None 的比较
因为sort是原地修改列表
''
n,m=list(input()),list(input())
n.sort(),m.sort()
if n==m:
print("yes")
else :print("no")
''
sorted() 函数会返回字符串的字符按字母顺序排列后的一个新列表
通过将 n 和 m 排序并进行比较,代码可以判断这两个字符串
是否包含完全相同的字符且字符的出现顺序无关紧要
'''
print("yes")
else:
print("no")
6)猴子选大王
n=int(input())
lst=list(range(1,n+1))
i=0
while len(lst)>1:
i+=2
i%=len(lst) #这步很重要,要想清楚为啥
del lst[i]
print(lst[0])
n = int(input()) # 输入猴子的数量
p = 0 # p 表示最终胜利者的索引,初始化为 0
for i in range(2, n + 1): # 从 2 个猴子开始,直到 n 个猴子
p = (p + 3) % i # 每次从当前的 p 位置开始,报数到 3,找到下一个被淘汰的猴子
print(p + 1) # 最终输出猴王的编号,p 的值是从 0 开始的,因此需要 +1
7)列表推导式
s=s1+s2
print(*[i for i in s if i not in s1 or i not in s2])
# l=list(map(int,input().split()))
# ans=sum(l)/len(l)
# s=[l[i] for i in range(len(l)) if l[i]>ans]
# print(*s,sep=" ",end=" ")
l=list(map(int,input().split()))
s=[i for i in l if i>(sum(l)/len(l))]
print(*s,sep=' ',end=' ')
8)if语句
if s[i].isalpha() and s[i].lower() not in str.lower():
str+=s[i]
9)每行每列最大值
append用于在列表末尾添加一个元素
n=list(map(int,input().split()))
l=[]
l.append(n[0]+n[4]+n[8])
l.append(n[2]+n[4]+n[6])
for i in range(0,7,3):
l.append(n[i]+n[i+1]+n[i+2])
for i in range(3):
l.append(n[i]+n[i+3]+n[i+6])
print(max(l))
#即列表的最大值
10)预处理打印abcd
s="ABCDEFGHIJK"
n=int(input())
for i in range(n):
for j in range(i+1):
print(s[j],end="")
print()
11)杨辉三角
0] * 15 结果是一个长度为 15 的列表:
for _ in range(15),它使用列表生成式(list comprehension)循环了 15 次,每次生成一个 [0] * 15 的列表。这里的 _ 是一个惯用的变量名,表示这个变量不会在后续使用,仅仅是为了执行循环 15 次。
n = int(input()) # 获取输入
# 初始化二维列表,n+1 是因为我们要从1开始索引
l = [[0] *15 for _ in range (15)]
# 初始化杨辉三角的第一行和第二行
l[1][1] = 1
if n>=2:
l[2][1] = 1
l[2][2] = 1
# 填充杨辉三角的其他行
for i in range(3, n + 1):
for j in range(1, i + 1):
if j == 1 or j == i:
l[i][j] = 1
else:
l[i][j] = l[i-1][j-1] + l[i-1][j]
# 输出杨辉三角
for i in range(1, n + 1):
a=' '
print(a*(n-i)*2,end='')
for j in range(1, i + 1):
print("%-4d" % l[i][j],end='')
print() # 换行
12 利用集合给列表去重
l=list((input())
s=sorted(set(l),key=l.index)
print(*s,sep=" ")
'''
set(l):将 l 转换为集合 set(l)
但集合本身无序
所以列表排序关键词是l.index,返回列表 l 中某个元素首次出现的索引位置
'''
13 列表排序
n=int(input())
ans=[]
#初始化空列表
while n>0:
l=list(map(int,input().split()))
ans.append(sum(l))
#列表末尾添加元素
n-=1
print(*sorted(ans,reverse=True),sep="\n")
14 不带中括号输出
l=[1,2,3]
print(l)
print(*l)
15 二维列表
l.append(list(map(int, input().split())))
#二维列表
a,b=map(int,input().split())
num=[]
for i in range(a):
t= [int(x) for x in input().split()]
num.append(t)
#将每一行的整数列表 t 添加到矩阵 num 中。
for i in range(b):
for j in range(a):
if a-1==j:
print(num[j][i])
else:
print( num[j][i], end=" ")
# print(num[-1][i])
#num[-1][i] 表示取矩阵 num 的最后一行的第 i 列。
16 统计字符出现次数
s=input()
a=input()
print(s.count(a))
17 字典
n=int(input())
l=list(map(int,input().split()))
ans={}
for i in l:
ans[i]=ans.get(i,0)+1
#如果键 i 不存在,get(i, 0) 会返回默认值 0(即第二个参数 0)。
#这就避免了在访问不存在的键时引发 KeyError 错误。
for i in sorted(ans.keys()):
print("%d:%d"%(i,ans[i]))
18 字典合并
color = ["red", "orange", "yellow", "green", "blue", "violet"]
flower = ["Rose", "Poppies", "Sunflower", "Grass", "Bluebells", "Violets"]
dic = dict(zip(color, flower))
#zip(color, flower):zip 函数将两个可迭代对象中的元素
#一一配对,生成一个迭代器。每一对元素组成一个元组
n = int(input())
for i in range(n):
s = input()
if s in color:
print("%s are %s." % (dic[s], s))
else:
print("I don't know about the color %s." % s)
dit1=dict(eval(input()))
dit2=dict(eval(input()))
#eval(input()) 会读取用户的输入,并将其转换为字典格式。
for i,j in dit1.items():
dit2[i]=dit2.get(i,0)+j
# 遍历 dit1 中的每一个键值对,其中 i 是键,j 是值。
ans=list(dit2.items())
ans.sort(key=lambda x :ord(x[0]) if type(x[0])==str else x[0])
'''
第一个元素是字符串,则使用这个字符串第一个字符的 Unicode 编码(ord(x[0]))作为排序依据。
第一个元素不是字符串,则直接使用这个元素的第一个值(x[0])作为排序依据。
如果键是字符串(type(x[0]) == str),
则按键的 Unicode 码点值 排序。
ord(x[0]) 返回键 x[0] 的 Unicode 编码。
如果键是数字,则直接按数字大小排序。
'''
for i,j in ans:
if(type(i)==str):
print("'{}':{}".format(i,j))
else:
print("{}:{}".format(i,j))
#### 19 众数
while 1:
try:
n=int(input())
l=list(map(int,input().split()))
num=max(l,key=l.count)
#关键词是出现次数
print(num,l.count(num))
except:
break