- 用random库生成一个数值在-1到1内的10*5的矩阵,再将它转置,再算它和它的转置的乘积
from random import*
x=[[2*random()-1 for i in range(5)] for j in range(10)]
y=list(map(list,(zip(*x))))
z=[]
r=len(x)
c=len(y[0])
for i in range(r):
row=c*[0]
for j in range(c):
s=0.0
for k in range(len(y)):
s+=x[i][k]*y[k][j]
row[j]=s
z.append(row)
print(z)
用函数的结构来表示
from random import*
def printM(m):
for i in range(len(m)):
for j in range(len(m[0])):
print(m[i][j],end="")
print()
def multi(m1,m2):
result=[]
for i in range(len(m2[0])):
row=[]
for j in range(len(m2[0])):
s=0
for k in range(len(m1[0])):
s+=m1[i][k]*m2[k][j]
row.append(s)
return result
m1=[[random()*2-1 for i in range(5)]for j in range(10)]
printM(m1)
m2=[[row[i] for row in m1]for i in range(len(m1[0]))]
printM(m2)
printM(multi(m1,m2))
- 生成10*5的随机数据帧,在编写代码实现矩阵转置
def printM(m):
for i in range(len(m)):
for j in range(len(m[0])):
print(m[i][j],end="")
print()
import random as R
m1=[[R.uniform(-1,1)for i in range(5)]for j in range(10)]
printM(m1)
m2=[[0 for i in range(10)]for j in range(5)]
printM(m2)
for i in range(len(m2)):
for j in range(i):
m2[i][j]=m2[j][i]
printM(m2)
- 输入一个英文句子,统计里面每个字母出现的次数,组合成一个字典。要求大小写字母相同处理
s=input("please input a sentence:")
s=s.upper()
s1=[]
for i in s:
if i not in s1 and 64<ord(i)<97:
s1+=[i]
s2=[]
for j in range(len(s1)):
t=0
for k in s:
if k==s1[j]:
t+=1
s2+=[t]
print(dict(zip(s1,s2)))
#方法二
string=input("plz enter a sentence").upper()
s1=(set(item for item in string if (item.isupper())))
count={item:string.count(item)for item in s1}
print(count)
- 编写一个程序,从键盘上输入数字,熟自制件用空格间隔,用map函数将数据处理成一个数值列表输出
s=input("请输入10个数,数字间用空格作为间隔:")
words=list(map(int,s.split()))
print(words)
- 建立一个学生姓名和手机号的字典,输入格式:姓名 手机号 输入-1时结束输入过程,然后再通过一个循环实现输入姓名查找手机的功能,输入“xxx”结束查找
#方一
s=input("请输入新的人和对应手机号:")
x,y=s.split()
s1=[];s2=[]
while y!="-1":
s1+=[x]
s2+=[y]
x=input("请输入人和手机号:")
x,y=x.split()
dict=dict(zip(s1,s2))
print(dict)
y=input("请输入学生姓名:")
while y!="xxx":
print(dict[y])
y=input("请输入学生姓名:")
print("查找结束")
#方二
s={}
while 1:
a=input("laz enter ur name and phone number:")
if a=="-1":
break
else:
b=list(a.split())
s[b[0]]=b[1]
while 1:
c=input("plz enter ur name:")
if c=="xxx":
print("over")
break
print(s[c])
#方三
dic={}
def write(dic):
while True:
L=input("enter your name and number")
if L=="-1":
break
else:
L=L.split()
dic[L[0]]=L[1]
return dic
def read(dic):
while True:
key=input("enter your name:")
if key=="xxx":
break
elif key not in dic.keys():
print("无相关记录")
else:
print(dic[key])
read(write(dic))
- 生成一个包含26个大写字母和一一对应的1~26的字典
list1=[chr(i) for i in range(65,65+27)]
list2=[i for i in range(1,27)]
s=dict(zip(list1,list2))
print(s)
- 用字典完成程序,提示用户输入电话号码,用英文单词形式显示数字
s1=[i for i in range(10)]
s2=["zero","one","two","three","four","five","six","seven","eight"]
s=dict(zip(s1,s2))
print(s)
num=input("please input ur number:")
for i in num:
print(s[int(i)],end=" ")
- 区分一下列表的用途
- 转置一个矩阵
x=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
xt=[[row[i] for row in x]for i in range(len(x[0]))]
print(xt)
等价于
x=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
xt=[]
for i in range(len(x[0])):
line=[]
for row in x:
line.append(row[i])
xt.append(line)
print(xt)
此处
line=[]
for row in x:
line.append(row[i])
xt.append(line)
相当于[row[i]]for row in x