python-矩阵转置/将列表分割成块/和超过N的最短子数组

一:矩阵转置
题目描述

输入一个 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        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


代码解释:
“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         sum=''
        for j in range(0,a):
              sum+="{} ".format(c[j][e])
        print(sum)
        e+=1                                        ”,令e为循环密码子,初始值为0,当e


运行效果展示:

python-矩阵转置/将列表分割成块/和超过N的最短子数组_第1张图片

python-矩阵转置/将列表分割成块/和超过N的最短子数组_第2张图片 

 

 

 

 

二:将列表分割成块
题目描述

编写一个程序,将一个数字列表按照指定大小分割成特定大小的块。
定义函数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的最终结果。


运行效果展示:

python-矩阵转置/将列表分割成块/和超过N的最短子数组_第3张图片

python-矩阵转置/将列表分割成块/和超过N的最短子数组_第4张图片 

 

 

 

 

三:和超过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)      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)


代码解释:
“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)        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循环。


运行效果展示:

python-矩阵转置/将列表分割成块/和超过N的最短子数组_第5张图片

 python-矩阵转置/将列表分割成块/和超过N的最短子数组_第6张图片

              (声明:以上内容均为原创)

 

 

 

你可能感兴趣的:(python,算法,机器翻译)