python map()\filter()\索引

一、python 的map()函数:

1、map()函数是一个python的内置高阶函数,他接受一个函数f和一个list或者多个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。

注意,map函数不改变原有的list,而是返回新的list。

由于list可以包含任意类型的元素,因此,map函数可以处理包含任意类型的list,只要传入的函数f可以处理这种数据类型即可。

例子:

假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,使用map函数,把一个list变成一个包含规范英文名字的list:

输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']

def format_name(s):

     s1 = s[0:1].upper() + s[1:].lower()

     return s1

print map(format_name,['adam', 'LISA', 'barT'])

2、当map函数中的list有多个时:

map()可以并行的对每个list执行如下图所述的过程:

此时,传入几个list,函数f就应该有几个形式参数。

例子:

l2 = map(lambda x,y:x*y,[1,2,3],[1,2,3])

输出:[1,4,9]

l3 = map(lambda x,y:(x*y,x+y),[1,2,3,4],[5,6,7,8])

输出:[(5, 6), (12, 8), (21, 10), (32, 12)]

 

python3中,可以处理表长不一致的情况,但是无法处理类型不一致的情况。

map的特殊用法:可以做类型转换。

例子:

l = map(int,'1234')

for i in l:

   print type(i)

   print i

输出结果为:

<type 'int'>
1
<type 'int'>
2
<type 'int'>
3
<type 'int'>
4

3、当map中的传入的函数参数是None时,自动假定一个‘identity’函数,这时候就是模仿zip()函数,

例子:

l = [1,2,3]

x = map(None,l)

print x

输出结果为:[1,2,3]。

print map(None,[1,2,3],[4,5,6])

输出结果为:
[(1, 4), (2, 5), (3, 6)]

 

二、python的filter()函数:

filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件的元素组成的新列表。

函数有两个参数,第一为函数,第二个为序列。序列的每个元素作为参数传递给函数进行判断,返回true或false。将返回true的元素放到新列表中返回。

语法:filter(function,iterable)

function是判断函数,iterable是可迭代对象。

例子:过滤链表中所有的奇数:

def is_odd(n):

   return n%2 == 1

new_list = list(filter(is_odd,[1,2,3,4,5,6,7,8,9,10]))

print new_list

输出结果为:[1,3,5,7,9]

三、python的切片和索引:

参考自:http://www.cnblogs.com/luruiyuan/p/5926133.html

1.索引和切片:python当中数组的索引和其他语言一样,从0~n-1,使用索引的方法也是中括号,但是python中的切片的使用简化了代码

索引:取出数组s中第3个元素:x=s[2]

切片:用极少的代码将数组元素按需处理的一种方法。切片最少有1个参数,最多有3个参数,演示如下:

我们假设下面所用的数组声明为array=[2,3,4,5,6]

1个参数:

  1. array[1:]——从下标为1的元素选择到最后一个元素,返回 [4,5,6]
  2. array[:3]——从下标为0的元素选择到下标为2的元素,不包括下标3的元素,返回[2,3,4]
  3. array[::2]——从下标为0的元素开始,最后一个%2为0的下标对应的那个元素为止

说明:如果前2个参数中有任何一个为负数,那么,分2种情况,如果负数 小于 -n,那么就给负数归0,如果仅仅在-n~0,那么就将这个数理解为0~n-1之间转圈圈就可以了。负数转圈的算法,很简单,就不说了

 

2个参数:

  1. array[1:-2]——从下标1开始,到下标(n-1)之前的所有元素,返回[3,4]
  2. array[-2:3]——当第一个参数经过计算大于等于后一个,返回空数组[]
  3. array[-13:3]——参见上面第一个说明,第一个参数归0,返回[2,3,4]

 

3个参数

  1. [::-1]——从头到尾,将数组反转,返回[6,5,4,3,2]
  2. [-1::-2]——从尾到头,每个一个元素,选择一个元素,返回[6,4,2]

说明:没有第3个参数时,切片只能从左向右,此时若第一个参数大于等于第二个参数,则返回空数组

说明:第三个参数<0时,切片方向可以被改变,此时没有上述限制

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值