错题整理

  1. 已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果 ()

    答案:True
    解析:id() 函数用于获取对象的内存地址。但值得注意的是,python 为了提高内存利用效率会对一些简单的对象(如数值较小的int型对象,字符串等)采用重用对象内存的办法。
    注意:id(a[2])==id(b[2]) False

a = [1, 2, 3]
b = [1, 2, 4]
id(a[1])==id(b[1])
Out[4]: True
id(a)
Out[5]: 1327724366344
id(b)
Out[6]: 1327724665928
id(a[0])==id(b[0])
Out[7]: True
id(a[2])==id(b[2])
Out[8]: False
  1. 下面的python3函数,如果输入的参数n非常大,函数的返回值会趋近于以下哪一个值(选项中的值用Python表达式来表示)
import random 
def foo(n):   
        random.seed()
     c1 = 0
     c2 = 0
     for i in range(n):
        x = random.random()
        y = random.random()
        r1 = x * x + y * y
        r2 = (1 - x) * (1 - x) + (1 - y) * (1 - y)
        if r1 <= 1 and r2 <= 1:
           c1 += 1
         else:
           c2 += 1
    return   c1 / c2

答案:(math.pi - 2) / (4 - math.pi)
解析:在这里插入图片描述

  1. 下面代码运行后,a、b、c、d四个变量的值分别是?
import copy
a = [1, 2, 3, 4, ['a', 'b']] 
b = a 
c = copy.copy(a) 
d = copy.deepcopy(a) 
a.append(5) 
a[4].append('c') 

答案:

a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]

解析:
b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a) # 浅复制,只会拷贝父对象, 不会拷贝父对象中的子对象,所以若a的子对象变则c 变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
a.append(5) # 改变父对象
a[4].append(‘c’) #改变父对象中的 [‘a’, ‘b’]子对象

5.以下程序结果为

 import numpy as np
a = np.repeat(np.arange(5).reshape([1,-1]),10,axis = 0)+10.0 b = np.random.randint(5, size= a.shape)
c = np.argmin(a*b, axis=1)
b = np.zeros(a.shape)
b[np.arange(b.shape[0]), c] = 1
print b

答案:一个 shape = (10,5) 的 one-hot 矩阵
解析:

a = np.repeat(np.arange(5).reshape([1,-1]),10,axis = 0)+10.0
"""
np.repeat(a,b)将a重复b次
np.arange(5).reshape([1,-1])创建等差数组,1行,列未知
即[1,2,3,4,5]按行重复10次,广播每一个值加10
"""
b = np.random.randint(5, size= a.shape)
# 生成[0,5)随机矩阵,大小和矩阵a相同
c = np.argmin(a*b, axis=1)
# 矩阵a和b乘积,返回每行最小值位置
b = np.zeros(a.shape)
# 与矩阵a相同大小的全零矩阵
b[np.arange(b.shape[0]), c] = 1
# b中所有c返回位置置为1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值