牛客网专项练习30天Pytnon篇第17天
1.在python3运行环境下,执行以下选项中的代码,其输出结果不为[2,4,6,8,10]的是:(D)
A.
a = [1,2,3,4,5,6,7,8,9,10]
print(a[1::2])
B.
a = [1,2,3,4,5,6,7,8,9,10]
lis = []
for i in a:
if i % 2 == 0:
lis.append(i)
print(lis)
C.
a = [1,2,3,4,5,6,7,8,9,10]
print(list(filter(lambda x:x % 2 ==0,a)))
D.
a = [1,2,3,4,5,6,7,8,9,10]
def is_odd(n):
return n % 2 == 0
print(list(filter(is_odd(),a)))
解析:
D选项会抛出一个缺少位置参数的异常,实际上这里调用的是函数本身,是整个函数体,不需要等待函数执行完成,所以调用时不需要加小括号,正确的调用方式为print(list(filter(is_odd,a)))。
2.在Python3中,下列程序运行结果为:(A)
lists = [1, 2, 3, 4]
tmp = 0
for i,j in enumerate(lists):
tmp += i * j
print(tmp)
A.20
B.30
C.100
D.None
解析:
Python3中,enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,所以程序中表示返回列表的元素和对应下标乘积的累加求和。
3.执行以下程序,输出结果为:(D)
lis = ['apple','lemon','pear','peach']
def fn(x):
return x[::-1]
lis.sort(key=fn,reverse=True)
print(lis)
A.['apple', 'lemon', 'peach','pear']
B.['pear', 'peach', 'lemon', 'apple']
C.['apple','pear', 'lemon', 'peach']
D.['pear', 'lemon', 'peach', 'apple']
解析:
参数key=fn,而fn函数的执行效果就是根据元素的逆序后的字符串排序,参数reverse=True表示按照降序进行排序,因此答案为D。
4.执行下列选项的程序,输出结果为True的是:(B)
A.
lis = [1,3,2]
a = id(lis)
lis = sorted(lis)
b = id(lis)
print(a==b)
B.
lis = [1,3,2]
a = id(lis)
lis += [4,5]
b = id(lis)
print(a==b)
C.
tup = (1,3,2)
a = id(tup)
tup += (4,5)
b = id(tup)
print(a==b)
D.
tup = (1,3,2)
a = id(tup)
tup = sorted(tup)
b = id(tup)
print(a==b)
解析:
使用sorted()进行排序会生成新的序列,生成的新序列和原序列id值必然不同。对于可变对象,sorted()进行排序时原序列也发生变化,而本题A中用lis保存了生成的新序列,因此AD选项输出结果均为False;对于+=操作,如果是可变对象,则操作前后序列的id值不变,如果是不可变对象,则操作前后序列的id值改变,故B正确。
5.在Python3中,下列程序运行结果为:(A)
strs = ['a', 'ab', 'abc', 'python']
y = filter(lambda s: len(s) > 2, strs)
tmp = list(map(lambda s: s.upper(), y))
print(tmp)
A.['ABC', 'PYTHON']
B.['abc', 'PYTHON']
C.['abc', 'python']
D.['a', 'ab']
解析:
此题题意为:过滤掉字符串 strs 中长度小于等于2的字符,并将剩余的字符转换为大写输出。首先,python3中的 filter(function, iterable) 函数,function -- 判断函数,iterable -- 可迭代对象,其中 lambda s: len(s) > 2 表示判断字符串的长度是否大于2,迭代对象为 strs接着,使用 map 函数将第一步过滤之后的字符转换为大写,upper() 为字符大写转换函数,最后采用 list() 将其转换为列表输出为 ['ABC', 'PYTHON']。