一:矩阵转置
题目描述
输入一个 n 行 m 列的矩阵 A,输出它的转置 AT。
输入
第一行包含两个整数 n 和 m,表示矩阵 A 的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。相邻两个整数之间用单个空格隔开,每个元素均在 1∼1000 之间。
输出
m 行,每行 n 个整数,为矩阵 A 的转置。相邻两个整数之间用单个空格隔开。
样例输入1
3 3
1 2 3
4 5 6
7 8 9
样例输出1
1 4 7
2 5 8
3 6 9
来源/分类(难度系数:三星)
每日一题 数组
完整代码展示:
# coding=utf-8
a,b=map(int,input().split())
c=[]
for i in range(a):
d=list(map(int,input().split()))
c.append(d)
e=0
while e<b:
sum=''
for j in range(0,a):
sum+="{} ".format(c[j][e])
print(sum)
e+=1
# coding=utf-8
a,b=map(int,input().split())
c=[]
for i in range(a):
d=list(map(int,input().split()))
c.append(d)
e=0
while e<b:
sum=''
for j in range(0,a):
sum+="{} ".format(c[j][e])
print(sum)
e+=1
代码解释:
“a,b=map(int,input().split()) ”,导入用户输入的矩阵行数a和列数b。
“c=[]
for i in range(a):
d=list(map(int,input().split()))
c.append(d) ”,建立一个空列表c,接着循环a次:让用户输入矩阵一行的元素并将其储存在列表d中,再将d添加进c中。
“e=0
while e<b:
sum=''
for j in range(0,a):
sum+="{} ".format(c[j][e])
print(sum)
e+=1 ”,令e为循环密码子,初始值为0,当e<b时:建立一个空字符串sum,接着依次遍历0~a-1的数字,sum连接元素c[j][e],每两个元素之间插入一个空格。最后打印sum的值。每循环一次,e+1,直至e==b,跳出整个while循环。
运行效果展示:
二:将列表分割成块
题目描述
编写一个程序,将一个数字列表按照指定大小分割成特定大小的块。
定义函数list_into_chunks()的函数,有两个参数num_list和chunk_size。
在函数内,将num_list分割成大小为chunk_size的子列表。
将这些子列表作为列表返回。
示例输入
1 2 3 4 5 2
示例输出
[[1, 2], [3, 4], [5]]
解释: 由于测试输入具有奇数个元素,而我们需要创建一个2(偶数)的块大小,剩余的元素将创建一个单元素子列表,即[5]。
输入会包含两行,第一行包含数字并已转为列表,第二行包含块大小。
考虑块大小chunk_size为偶数或奇数的情况。
来源/分类(难度系数:二星)
矩阵 数组
完整代码展示:
a=list(map(int,input().split()))
b=int(input())
c=[]
d=len(a)//b
e=0
for i in range(d):
c.append(a[e:e+b])
e+=b
c.append(a[e::])
f=[]
for i in range(0,len(c)):
if len(c[i])!=0:
f.append(c[i])
print(f)
a=list(map(int,input().split()))
b=int(input())
c=[]
d=len(a)//b
e=0
for i in range(d):
c.append(a[e:e+b])
e+=b
c.append(a[e::])
f=[]
for i in range(0,len(c)):
if len(c[i])!=0:
f.append(c[i])
print(f)
代码解释:
“a=list(map(int,input().split())) ”,导入用户输入的待处理数字并将其储存在列表a中。
“b=int(input()) ”,导入用户输入的数字列表需分割成的长度b。
“d=len(a)//b
e=0
for i in range(d):
c.append(a[e:e+b])
e+=b ”,令d等于列表a的长度除以b并保留整数部分。令e为循环密码子,依次遍历0~d-1的数字,将a中a[e:e+b]的部分添加进c中。每循环一次,e+b。
“c.append(a[e::])
f=[]
for i in range(0,len(c)):
if len(c[i])!=0:
f.append(c[i]) ”,将a中的余下部分添加进c中。建立一个空列表f,接着遍历c中元素,判断该元素是否为空:如果不为空,则将该元素添加进f中。
“print(f) ”,打印f的最终结果。
运行效果展示:
三:和超过N的最短子数组
题目描述
编写一个程序,找出所有元素之和严格超过给定值的最短连续子列表的长度。
定义函数shortest_sublist_exceeds_n(),它接受两个参数 - 一个整数列表lst和一个整数n。
该函数应返和严格大于n的最短子列表的长度。
如果不存在这样的子列表,函数应返回 -1。
示例输入
-1 2 3 4 7 1122
示例输出
4
解释: [-1, 2, 3, 4, 7, 11]的和超过22的最短子列表是[3, 4, 7, 11],所以输出4
两个for循环计算所有子列表的和,然后找到和大于n的最短子列表。
此处子列表是连续的,因此可以使用滑动窗口技术。
来源/分类(难度系数:一星)
数组 循环结构
完整代码展示:
a=list(map(int,input().split()))
b=int(input())
c=[]
for i in range(0,len(a)):
if a[i]>=0:
c.append(a[i])
c.sort(reverse=True)
if sum(c)<b:
print(-1)
else:
d=0
sum=0
while sum<=b:
sum+=c[d]
d+=1
print(d)
a=list(map(int,input().split()))
b=int(input())
c=[]
for i in range(0,len(a)):
if a[i]>=0:
c.append(a[i])
c.sort(reverse=True)
if sum(c)<b:
print(-1)
else:
d=0
sum=0
while sum<=b:
sum+=c[d]
d+=1
print(d)
代码解释:
“a=list(map(int,input().split())) ”,导入用户输入的数组元素并将其储存在列表a中。
“b=int(input()) ”,导入用户输入的定值b。
“c=[]
for i in range(0,len(a)):
if a[i]>=0:
c.append(a[i])
c.sort(reverse=True) ”,建立一个空列表c,接着依次遍历a中元素,判断a[i]是否大于等于0:如果是,则将a[i]添加进c中。最后对c中元素进行升序排序。
“if sum(c)<b:
print(-1)
else:
d=0
sum=0
while sum<=b:
sum+=c[d]
d+=1
print(d) ”,判断c中元素之和是否小于b:如果是,则打印-1,否则令d为循环密码子,sum为元素和,当sum<=b时:sum+c[d]。每循环一次,d+1,直至sum>b,跳出整个while循环。
运行效果展示:
(声明:以上内容均为原创)