描述
使用随机函数randint(),建立两个长度为5的二维列表a和b。包含的数据如下:
a列表:包含子列表 [学号,p成绩,m成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数。
b列表:包含子列表 [学号,q成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数
先需要将A,B两个列表数据进行合并,即将B列表中的‘q成绩’添加到A列表中的相同学号的子列表中。
输入一个整数k,将B列表中的’q成绩’插入到A列表相同学号的子列表的k位置上。
合并完成后,输出合并后的A列表。
注意:为保证生成固定序列,本题需要使用同一个循环结构生成两个随机列表A和B,类似:
for #######:
#A列表添加 学号,p成绩,m成绩
#B列表添加 学号,q成绩
输入
第一行输入s,随机种子
第二行输入p,插入位置
输出
合并后的A列表
使用随机函数randint(),建立两个长度为5的二维列表a和b。包含的数据如下:
a列表:包含子列表 [学号,p成绩,m成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数。
b列表:包含子列表 [学号,q成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数
a=[]
b=[]
s=int(input())
random.seed(s)
for i in range(1,6):
a.append([i,random.randint(0,100),random.randint(0,100)])
b.append([i,random.randint(0,100)])
输入种子 :4
可得到如下的两个列表:
[[1, 30, 38], [2, 92, 50], [3, 19, 11], [4, 2, 51], [5, 37, 97]]
[[1, 13], [2, 61], [3, 8], [4, 70], [5, 7]]
先需要将 a,b 两个列表数据进行合并,即将 b 列表中的 ‘q成绩’ 添加到 a 列表中的相同学号的子列表中。
输入一个整数 k,将 b 列表中的 ‘q成绩’ 插入到 a 列表相同学号的子列表的 k 位置上。
向列表中位置 i 插入数据 x 可以用 ls.insert(i,x) 实现
x = int(input())
for i in range(len(a)):
a[i].insert(x,b[i][1])
完整参考代码:
import random
a=[]
b=[]
s=int(input())
random.seed(s)
for i in range(1,6):
a.append([i,random.randint(0,100),random.randint(0,100)])
b.append([i,random.randint(0,100)])
p=int(input())
for i in range(len(a)):
a[i].insert(p,b[i][1])
print(a)
可以将问题拆解,用函数形式分别完成部分功能,每个函数实现一个功能,代码少、逻辑更清晰,也容易维护和修改:
import random
def create(): # 产生列表
a, b= [],[]
for i in range(1, 6):
a.append([i, random.randint(0, 100), random.randint(0, 100)])
b.append([i, random.randint(0, 100)])
return [a,b]
def merge(ls,x): # 插入数据
for i in range(len(ls[0])):
ls[0][i].insert(x, ls[1][i][1])
return ls[0]
if __name__ == '__main__':
s = int(input()) # 输入随机数种子
x = int(input()) # 输入插入位置
random.seed(s) # 输入随机数种子
ls = create() # 调用函数,创建列表
print(merge(ls,x)) # 调用函数,插入数据,输出返回结果