|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.第3个判断长度的>>> a = [1, 2, 3, "FishC", ('a', 'b', 'c'), [], None]
>>> print(len(a))
为什么【】和None都占了长度啊?他们不是表示是空的吗?但是我写a='' 的话,len(a)它的长度是0啊,这个怎么判断?
2.第六题判断代码内容的values = [1, 1, 2, 3, 5]
nums = set(values)
def checkit(num):
if num in nums:
return True
else:
return False
for i in filter(checkit, values):
print(i, end=' ')
这里的num取值到底是多少呢?如果取1的话被过滤的话之后就只剩下【2,3,5】了啊?就不是答案说的【1,1,2,3,5】了啊?
3.第八题代码打印什么内容class A:
def __init__(self, x):
self.x = x
a = A(100)
a.__dict__['y'] = 50
print(a.y + len(a.__dict__))
这里的a.y中的y属性哪来的?题目中给的是'y'这一个是字典里的元素啊怎么可以用a.y的?这个答案不清楚怎么得到52的,没看懂
4.还有就是元祖的问题,我直接type('cherry',)的答案是字符串而temp='cherry',
type(temp)就是元组了有什么区别吗?
为什么【】和None都占了长度啊?他们不是表示是空的吗?但是我写a='' 的话,len(a)它的长度是0啊,这个怎么判断?
单独的对 '' 判断长度肯定是 0 呀,以为这个字符串里面没有元素 ,而你判断 [''] 这样就会发现 len 结果是 1
这里表示的是一个列表内有个元素是空字符串,None 同理,虽然他的意义是空,但是也算个元素
2.第六题判断代码内容的
这里的num取值到底是多少呢?如果取1的话被过滤的话之后就只剩下【2,3,5】了啊?就不是答案说的【1,1,2,3,5】了啊?
num 的值是在 filter(checkit,values) 这里传入的
filter 第一个参数是函数,第二个是可迭代对象,他会将可迭代对象的参数 一个个拿出来传入到前面一个参数
也就是前面的那个函数中去,一个个判断是否在 nums 集合中,若在则返回 True 则 filter 接受这个True结果,就将这个值保留下来,若不在则返回 False,filter 就将其过滤掉
3.第八题代码打印什么内容
这里的a.y中的y属性哪来的?题目中给的是'y'这一个是字典里的元素啊怎么可以用a.y的?这个答案不清楚怎么得到52的,没看懂
__dict__ 属性是查看对象内部所有的属性与其对应的值,返回的是字典
这里 a.__dict__['y'] = 50 就等于将 __dict__ 字典里增加了一个 'y' 对应的值为 50 到实例对象a 中去,a.y 就是这个时候添加进去的
你可以试试这个代码,就知道为什么返回的是 52:class A:
def __init__(self, x):
self.x = x
a = A(100)
print('a 实例对象中所有的属性名和对应的值:',a.__dict__)
a.__dict__['y'] = 50
print('a 实例对象中所有的属性名和对应的值:',a.__dict__)
运行后你会发现 第二次调用__dict__属性时候 返回的是 两个 key:value ,所以 len(a.__dict__) 就 等于 2 了
而原来的 y 对应的值是 50 所以相加 就是调用 52 了
4.还有就是元祖的问题,我直接type('cherry',)的答案是字符串而temp='cherry', type(temp)就是元组了有什么区别吗?
逗号是元组的标志,你记住这种用法就好, temp='cherry', 等价于 temp=('cherry',)
|
|