1.计算列表的度
【问题描述】
对于一个包含自然数的列表nums,计算他的度。列表的度定义为列表里任一元素出现的频率的最大值。
【输入形式】
从键盘输入一个列表,包含方括号,逗号分隔
【输出形式】
整数
【样例输入】
[1,2,3,3,4,5,4,3,3]
【样例输出】
4
代码:
#第一种:
def calDegrees(nums):
dic={}
for i in nums:
if i not in dic:
dic[i]=1
else:
dic[i]+=1
return max(dic.values())
nums = eval(input())
d=calDegrees(nums) #调用自定义函数
print(d)
#第二种:
def calDegrees(y):
z = 0
for x in y:
if y.count(x)>z:
z = y.count(x)
return z
nums = eval(input())
d=calDegrees(nums) #调用自定义函数
print(d)
2.把数列的元素重复n次,然后元素的平方形成新列表,然后去除重复元素
【问题描述】
读入一个整数列表和正整数n(n>1),把列表中每个元素重复n次,并对每个元素进行平方形成新的列表,最后去除列表中的重复元素。打印输出新列表。
【输入形式】
第一行输入列表,包括方括号,元素之间用逗号分隔。
第二行输入重复的次数。
【输出形式】
直接用print输出列表
【样例输入】
[2,3,4,5,5]
5
【样例输出】
[4, 9, 16, 25]
代码:
ls = eval(input())
n = eval(input())
ls2 = ls*n
ls3 = [x*x for x in ls2]
ls4=[]
for x in ls3:
if x not in ls4:
ls4.append(x)
print(ls4)
3.把长度为2n的列表分成n对,使得每一对的最小值的和最大
【问题描述】
给定长度为2n的自然数列表nums,把这些数分成n对,把每一对的最小值加起来(不同的分法,其和可能不同),输出最小值和的最大值。
【输入形式】
输入偶数长度的列表,包括方括号,逗号分隔
【输出形式】
和的最大值,整数
【样例输入】
[1,4,3,2]
【样例输出】
4
【样例说明】
把列表按照某种分法,分成n对,把每一对的最小值加起来。不同的分法,其和是不同的。
例如[1,4,3,2]可以分为:4,1和3,2 或者 4,2和3,1;或者4,3和2,1;显然4,3和2,1这种分法最小值的和最大,3+1=4,前面两种最小值都是3。所以输出结果4.
代码:
#第一种:
def maxsum(nums):
b = []
c = []
for x in range(0,int(len(nums)/2)):
b.append(nums.pop(nums.index(max(nums))))
c.append(nums.pop(nums.index(max(nums))))
return(sum(c))
nums = eval(input())
v = maxsum(nums)#调用自定义函数
print(v)
#第二种:
def maxsum(nums):
n=len(nums)
c=0
nums.sort(reverse=True)
for x in range(1,n+1,2):
c=c+nums[x]
return c
nums = eval(input())
v = maxsum(nums)#调用自定义函数
print(v)
4.编写函数获得第n项斐波那契数列的值
【问题描述】
编写函数获得第n项斐波那契数列的值。斐波那契数列前10项如下:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。第1项为1,第二项为1,从第三项开始,每一项等于前两项之和。
【输入形式】
一个大于2的整数。如3,4,5等。
【输出形式】
一个整数,第n项的斐波那契数列的值
【样例输入】
10
【样例输出】
55
代码:
#第一种:
def Fibonacci(num,n):
n_2 = 0
n_1 = 1
current = 1
for x in range(2, n+1):
current = n_2 + n_1
n_2 = n_1
n_1 = current
return current
# print('第%d个数是%d'%(n, current))
num = [1, 1]
n = int(input())
print(Fibonacci(num, n))
#第二种:
def Fibonacci(num,n):
a=1
b=1
if n>2:
for x in range(n-2):
c=a+b
a=b
b=c
else:
c=1
return c
num = [1, 1]
n = int(input())
print(Fibonacci(num, n))
5.找出不是两个列表中的共有元素,在结果列表升序没有重复元素
【问题描述】
给定两个整型列表,找出不是两者共有的元素。这些元素不重复的放入新的列表,并升序排列。输出结果列表
【输入形式】
第一行输入一个列表,包括方括号,逗号分隔
第二行输入一个列表,包括方括号,逗号分隔
【输出形式】
直接用print打印结果列表
【样例输入】
[1,2,3,4,5,6,7,8,8,9,9]
[1,2,3,4,7,7,7,10,10]
【样例输出】
[5, 6, 8, 9, 10]
代码:
nums1 = eval(input())
nums2 = eval(input())
nums3 = []
#把不nums1中和nums2不重复的元素加入nums3
for x in nums1:
if x not in nums2:
if x not in nums3:
nums3.append(x)
# 把num2中的元素不重复的加入nums3
for x in nums2:
if x not in nums1:
if x not in nums3:
nums3.append(x)
nums3.sort()
print(nums3)
6.使用列表生成式生成指定范围内的偶数列
【问题描述】
输入两个数,n,m。n是偶数,产生n和m之间的偶数。不包含m。输出偶数列表。
【输入形式】
n,m
【输出形式】
直接打印列表
【样例输入】
4,11
【样例输出】
[4, 6, 8, 10]
代码:
n, m = eval(input())
nums = [x for x in range(n,m,2)]
print(nums)
7.找出列表中的多数元素
【问题描述】
读入一个大小为n的列表,找出其中的多数元素。多数元素是指在列表中出现次数大于n//2的元素(每个列表最多一个多数元素)。根据代码框架编写一个函数。
【输入形式】
输入列表,包括方括号,逗号分隔
【输出形式】
如果有多数元素,输出这个元素的值,如果没有多数元素,输出False
【样例输入】
[3,2,3]
【样例输出】
3
代码:
def search(nums):
n = len(nums)
for x in nums:
if nums.count(x)>(n/2):
m = x
else:
m = False
return m
nums = eval(input())
y = search(nums)
print(y)
8.把分布在两个列表中的姓名和成绩配对后形成一个列表
【问题描述】
已知一个列表中存放的是一些学生的姓名,另外一个列表存放的是学生对应的考试成绩。两个列表长度相同。要求,把姓名和对应的成绩进行组合,形成一个列表。该列表包含一个嵌套列表,每个子列都是姓名和对应的成绩。最后输出形成的新列表。
【输入形式】
分两行输入,第一行输入姓名,按照字符串的方式输入,多个姓名之间用逗号分隔。第二行输入成绩,包含方括号,元素之间用英文逗号分隔。
【输出形式】
直接用print输出新的列表。
【样例输入】
tom,jack,jone,mike
[88,89,34,90]
【样例输出】
[['tom', 88], ['jack', 89], ['jone', 34], ['mike', 90]]
代码:
a = input().split(',')
a = list(a)
b = eval(input())
m = []
for x in range(len(a)):
n = []
n.append(a[x])
n.append(b[x])
m.append(n)
print(m)
9.生成指定长度的等差数列
【问题描述】
输入三个正整数n,m,l,生成指定长度的等差数列,存入列表中。其中n表示起始值,m表示列表元素的数量,l表示公差。
【输入形式】
在同一行输入n,m,l三个值,中间用英文逗号分隔。
【输出形式】
打印输出列表
【样例输入】
2,3,2
【样例输出】
[2, 4, 6]
代码:
a,b,c = map(int,input().split(','))
d = []
for x in range(b):
m = a + c*x
d.append(m)
print(d)
10.删除列表中指定位置的元素
【问题描述】
读入一个列表lst和正整数n和m,然后删除n~m之间的元素,不包括m位置的元素,其中n小于或者等于m。如果输入的n和m不在列表lst的下标范围内,则输出"error"。
【输入形式】
第一行输入列表。包含方括号,列表元素用逗号分隔。
第二行输入两个整数n和m,中间用一个逗号分割。
【输出形式】
直接用print输出列表
【样例输入1】
[1,2,3,4,5,6,7]
2,3
【样例输出1】
[1,2,4,5,6,7]
【样例输入2】
[1,2,3,4,5,6]
7,3
【样例输出2】
error
代码:
#第一种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):
b = []
for x in range(n):
b.append(a[x])
for i in range(m,len(a)):
b.append(a[i])
print(b)
else:
print('error')
#第二种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):
for x in range(n,m):
b = a.pop(x)
print(a)
else:
print('error')
#第三种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):
for x in range(n,m):
del a[x]
print(a)
else:
print('error')
11.找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数
【问题描述】
读入一个自然数构成的列表,找出其中的每一个素数,然后放入另外一个列表,并输出这个列表。
【输入形式】
按照列表的形式输入,包括方括号,元素之间用逗号分隔。
【输出形式】
直接用print输出列表
【样例输入】
[2,3,5,7,9,11,23]
【样例输出】
[2, 3, 5, 7, 11, 23]
代码:
#第一种:
def sushu(y):
x=[]
for i in y:
if i>=2:
for j in range(2,i,1):
if i%j==0:
break
else:
x.append(i)
print(x)
sums=eval(input())
sushu(sums)
#第二种:
y = eval(input())
x=[]
for i in y:
if i>=2:
for j in range(2,i,1):
if i%j==0:
break
else:
x.append(i)
print(x)
12.计算整数列表平均值(根据结果判断是否输出小数部分)
【问题描述】
输入一个整数列表,计算所有元素的平均值,如果结果中小数为0,请只输出整数部分,如果结果中的小数部分不为0,则输出结果保留两位小数。
【输入形式】
从键盘输入列表,包含方括号,列表元素用逗号分隔。
【输出形式】
纯整数,或者带两位小数的浮点数
【样例输入1】
[1,2,3,4,5]
【样例输出1】
3
【样例输入2】
[2,2,3,7,5,1]
【样例输出2】
3.33
代码:
a = eval(input())
if sum(a)%len(a)==0:
print('%d'%(sum(a)/len(a)))
else:
print(f'{sum(a)/len(a):.2f}')
13.计算整数列表的平均值
【问题描述】
输入一个整数列表,计算所有元素的平均值。结果保留两位小数。输入数据用逗号分隔
【输入形式】
从键盘输入一个整数列表,包括方括号,元素逗号分隔
【输出形式】
输出所有元素的平均值,结果保留两位小数
【样例输入】
[1,2,3,4,5]
【样例输出】
3.00
代码:
a = eval(input())
b = sum(a)/len(a)
print(f"{b:.2f}")
14.交换列表中两个元素的值,并输出列表
【问题描述】
输入一个由字符串构成的列表和两个整数n和m(n和m在输入列表的下标范围以内),交换其中两个元素的值,打印输出交换后的列表。
【输入形式】
第一行输入由空格分隔的多个字符串
第二行输入两个整数n和m,表示元素的位置,两个数字之间用空格区分。
【输出形式】
直接使用print函数输出列表
【样例输入1】
hello world python is great
2 3
【样例输出1】
['hello', 'world', 'is', 'python', 'great']
【样例输入2】
hello world python is great
-2 3
【样例输出2】
['hello', 'world', 'python', 'is', 'great']
代码:
#第一种:
a = list(map(str,input().split()))
b,c = map(int,input().split())
d = a.copy()
d[b]=a[c]
d[c]=a[b]
print(d)
#第二种(深拷贝):
import copy
a = list(map(str,input().split()))
b,c = map(int,input().split())
d = copy.deepcopy(a)
d[b]=a[c]
d[c]=a[b]
print(d)
15.删除列表中的最大元素和最小元素
【问题描述】
读入一个整数列表,输出删除最大元素和最小元素后的列表。最大元素和最小元素可能有多个。
【输入形式】
输入列表,包括方括号
【输出形式】
直接用print输出列表
【样例输入】
[1,2,3,4,5,6,1,7,7]
【样例输出】
[2, 3, 4, 5, 6]
代码:
a = eval(input())
b = a.count(max(a))
c = a.count(min(a))
if len(a) > 0:
for x in range(b):
del a[a.index(max(a))]
if len(a) > 0:
for x in range(c):
del a[a.index(min(a))]
print(a)
16.删除列表中的重复值
【问题描述】
输入一个列表,删除其中的重复值,再输出。
要求:假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。 不同元素在列表中的相对位置不应被改变。
【输入形式】
[元素1, 元素2, ... , 元素n]
【输出形式】
[元素1,元素2, ... , 元素k]
【样例输入】
[4,3,2,3,2,4,True]
【样例输出】
[3, 2, 4, True]
代码:
#第一种:
a = eval(input())
a.reverse()
b = []
for x in a:
if x not in b:
b.append(x)
#b.append(a.pop(a.index(x)))
b.reverse()
print(b)
#第二种:
import copy
a = eval(input())
b = copy.deepcopy(a)
for x in a:
if a.count(x)>1:
for i in range((a.count(x))-1):
b.remove(x)
else:
break
print(b)
17.列表生成及循环左移
【问题描述】
从键盘读入一个整数n, 并完成下述任务:
使用快速列表生成语法生成列表 [1, 2, ... ,n-1, n];
使用for循环将列表循环左移一个位置;
输出循环左移后的列表。
【输入形式】
n
【输出形式】
[2, 3, ... , n, 1]
【样例输入】
5
【样例输出】
[2, 3, 4, 5, 1]
代码:
#第一种:
n = int(input())
a = list(range(1,n+1))
b = a.copy()
for x in range(n-1):
b[x]=a[x+1]
b[n-1]=a[0]
print(b)
#第一种:
import copy
n = int(input())
a = list(range(1,n+1))
b = copy.deepcopy(a)
for x in range(n-1):
b[x]=a[x+1]
b[n-1]=a[0]
print(b)
18.把列表里面的个位正整数组合成一个最大的整数
【问题描述】
读入一个正整数列表,每个正整数都只有一位。把这些列表里面的数字,按位数组织成一个最大的整数,每个数字占据一位,不能重复使用。然后输出这个数字。例如列表[1,2,3,4] 可以组成1234, 或者4321等多个整数。输出最大整数。
【输入形式】
一个包含一位自然数的列表
【输出形式】
整数
【样例输入】
[0,1,2,3,2]
【样例输出】
32210
代码:
#第一种:
a = eval(input())
a.sort(reverse=True)
s = ''
for x in a:
s = s+str(x)
s = int(s)
print(s)
# #第二种:
a = eval(input())
a.sort(reverse=True)
for x in range(len(a)):
print(a[x],end='')
#第三种:
a = eval(input())
b = []
for x in range(len(a)):
b.append(a.pop(a.index(max(a))))
print(b[x],end='')
19.在列表中找出只出现一次的元素,并排序输出
【问题描述】
输入一个自然数列表,找出只出现一次的元素,并升序输出。如果没有只出现一次的元素,则输出False。
【输入形式】
输入包含自然数的列表,包括方括号,逗号分隔
【输出形式】
排序后的数字,每个数字之间用英文逗号分隔。或者False。
【样例输入1】
[1,2,3,5,2,3,4]
【样例输出1】
1,4,5
【样例输入2】
[9,9,9,12,12]
【样例输出2】
False
代码:
#第一种:
a = eval(input())
b = []
for x in a:
if a.count(x)>1:
for i in range(a.count(x)):
a.remove(x)
if len(a)>0:
a.sort()
b = ','.join(str(i) for i in a)
print(b)
else:
print(False)
#第二种:
a = eval(input())
b = []
for x in a:
if a.count(x)==1:
b.append(x)
if len(b)>0:
b.sort()
b = ','.join(str(i) for i in b)
print(b)
else:
print(False)
20.把列表中数值为0的元素移动到列表的尾端,其他元素相对顺序不变
【问题描述】
读入一个整数列表,把数值为0的元素移动到列表尾部,其他元素的相对顺序不变。输出调整后的列表。
【输入形式】
按照列表的形式输入,包括方块号,逗号分隔。
【输出形式】
直接使用print打印
【样例输入】
[1,0,2,0,3,0,4]
【样例输出】
[1, 2, 3, 4, 0, 0, 0]
代码:
a = eval(input())
b = a.count(0)
for x in range(b):
a.remove(0)
for x in range(b):
a.append(0)
print(a)
21.从一个列表中取出第n个元素,并重复m次,放到末尾,然后输出列表
【问题描述】
输入一个整数列表和整数n(n可以是负数)和正整数m,从该列表中选择第n个元素,把该元素重复m次,然后放到列表的尾端,最后输出列表。如果输入的n值不在列表下标范围之内,则输出"error"
【输入形式】
输入时,第一行输入列表的元素,用英文逗号分隔。
第二行输入两个数字n和m,用英文逗号分隔。
【输出形式】
直接使用print输出列表
【样例输入1】
1,2,3,4,5
2,3
【样例输出1】
[1, 2, 3, 4, 5, 3, 3, 3]
【样例输入2】
1,2,3,4,5
5,3
【样例输出2】
error
代码:
a = list(map(int,input().split(',')))
b,c = eval(input())
d = []
if (b+1) <= len(a):
for x in range(c):
d.append(a[b])
a = a+d
print(a)
else:
print('error')