首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python工厂第19层 多重列表1

1

大部分元素是0的矩阵称为稀疏矩阵,假设有k个非0元素,则可以把矩阵用k * 3的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该元素的值。如:

0 0 0 5 简记成:1 4 5

0 2 0 0 简记成:2 2 2

0 1 0 0 简记成:3 2 1

试编程读入一个3行5列的稀疏矩阵,转换成简记形式。

输入格式

输入包括3行,每行5个正整数,以空格隔开,代表一个3行5列的稀疏矩阵。

输出格式

输出k行,k为输入的矩阵中非0元素的个数。每行分别代表一个非0元素,按照从左到右,从上到下的顺序。每行包括三个整数,以空格隔开,分别代表该非0元素的行号,列号,以及元素的值。

示例1

输入:

0 3 0 0 0

0 0 7 0 0

1 0 0 0 5

输出:

1 2 3

2 3 7

3 1 1

3 5 5

解析:输入的格式是3行5列的数字,首先我们先把3行数据切片保存到列表a,b,c中

a1,b1,c1是计数用,用来记录非0数值所在的位置。

a=list(map(int,input().split()))

b=list(map(int,input().split()))

c=list(map(int,input().split()))

a1=b1=c1=0

通过for循环遍历列表a中的数据,如果是0,则计数加1,如果不是0,则输出一行三个数字,1代表第一行,a1+1表示非0数字的列数,i就是这个数字,输出完成计数也要加1 ,因为一行可能不只一个非0的数字。

for i in a:

  if i==0:

      a1+=1

  else:

      print('%s %s %s'%(1,a1+1,i))

      a1+=1

同上 ,通过for循环遍历列表b,c中的数据。

for i in b:

  if i==0:

      b1+=1

  else:

      print('%s %s %s'%(2,b1+1,i))

      b1+=1

for i in c:

  if i==0:

      c1+=1

  else:

      print('%s %s %s'%(3,c1+1,i))

      c1+=1

2

编程猫拿到了一个n*m二维列表,每一个位置和每一个位置存放的数字。你能将这个列表还原出来吗?没有告诉我们位置都是存放 0。

输入格式

第一行为整数看k, n和m

第2行到k+1 行每行有3个第一个告诉我们是在列表中第几行,第二个数字表示为列表中第几个,最后一个数字表示当前列表中存放的数字。

输出格式

输出n行,每行一个列表

示例1

输入:

2 2 2

0 1 5

1 1 6

输出:

[0, 5]

[0, 6]

解析:第一行的数字分别是表示有几个非0的数字,一共有几行列表,一行列表中有几个数字。

k,n,m = input().split()

k,n,m = int(k),int(n),int(m)

将数值保存到变量中

然后根据行数n,和列数m,创建列表并全部先填入0

a = []

for i in range(n):

  a.append([])

  for j in range(m):

      a[i].append(0)

非0的数字根据第2行到k+1 行每行有3个数,第一个告诉我们是在列表中第几行,第二个数字表示为列表中第几个,最后一个数字表示当前列表中存放的数字。

这里的数字和列表中的序号是一致的,比如0 1 5表示在第一行列表中的第二项是数字5。

for i in range(k):

  x,y,z = input().split()

  x,y,z = int(x),int(y),int(z)

  a[x][y] = z

最后输出所有的列表

for i in range(n):

  print(a[i])

3

在python中列表可以存放,各种各样的数据类型,当然也是可以存放列表的。我们称这样的列表为多重列表,如图所示:

那么你能读入一些数据讲他们转换为多重列表吗?每一行为一个列表,将他们组合为一个列表,并且输出。

输入格式

输入数据有n行

第一行为整数n

第二到n+1行 为用单个空格隔开的整数

输出格式

一个多重列表

示例1

输入:

3

1 2 3

4 5 6

7 8 9

输出:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

解析:将列表数据加入到另一个列表中可以使用append( )。

首先获取列表的数量,并新建一个列表

n=int(input())

t=[]

循环n次,将列表增加到空列表中去

for i in range(n):

  l=list(map(int,input().split()))

  t.append(l)

最后输出大列表

print(t)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201210A0HK6P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券