python之——list, lambda, map(), reduce()相关

一、给出以下python列表操作的答案:

(1) a=[1, 2, 3, 4, 5], a[::2] = ?, a[-2:] = ?

(2) 用一行代码实现,对列表a中偶数位置的元素,进行加3后求和?

(3) 将列表a的元素顺序打乱,再对a进行排序而获得列表b,把a和b按元素顺序构造一个字典d。

解析:

(1)[::2]指从list的下标0开始截取,一直到末位止,步长为2。所以:

a[::2]=[1,3,5]

a[-2]=4, a[-2:]表示取到末位。所以:

a[-2:]=[4,5]

(2)列表a中偶数位置的为元素:[2,4]。所以:

a[1::2]=[2,4]

进行加3,因要求用一行代码实现,所以可以lambda函数。它需与map()函数结合使用:

map(lambda x, y: x+y, a[1::2])
# 返回结果
[5,7]
map()函数语法,map()返回一个列表映射:
# function:函数; iterable,...:一个或多个序列
map(function, iterable, ...)

再对列表a中奇数位置的元素[1,2,3]求和:

sum(a[::2])

最后将奇数位置的元素和,与加3后的偶数位置的元素列表,加起来。需返回一个最终整数值,所以用reduce()函数:

reduce(lambda x, y:x+y, map(lambda x: x+3, li[1::2]),sum(li[::2]))

注:reduce()语法

# 此处:initializer为sum(li[::2])
reduce(function, iterable[, initializer])

在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

from functools import reduce

二、有两个列表:

a = [1, 2, 3, 4, 5]
b = [5, 9, 1, 3, 7, 2, 8]

合并这两个列表,去除重复元素,并且保持元素的排列顺序不变。

解答:

# answer 1

for i in b:
    if i not in a:
        a.append(i)
print(a)

# answer 2

print (a + [x for x in b if x not in a])

猜你喜欢

转载自blog.csdn.net/weixin_37537965/article/details/85322190