今天开始学Python(映射、过滤list和连接list)

来源:互联网 发布:js数组去重和排序 编辑:程序博客网 时间:2024/06/05 23:48


(1) list的映射和过滤

这是Python的强大性能之一啊...

它提供了一种紧凑的方法对list里的每个元素应用一个函数, 从而映射出一个新的list


上代码~

>>> li = [1,2,5,7]>>> [elem*2 for elem in li][2,4,10,14]>>> li[1,2,5,7]>>> li = [elem*2 for elem in li]>>> li[2,4,10,14]>>> [elem for elem in li if elem > 6][10, 14]

note 1.1. 映射的方法是: [ 对elem操作 forelem in list], 蓝色的部分可以自己定义

note 1.2. 映射是返回一个新的list, 并不会改变原list

note 1.3. 将一个list的映射赋值给原list是安全的, Python会在内存产生一个临时list, 映射完成后再赋值

note 1.4  if之后的表达式就是个过滤器, 使列表中的有些元素被映射的同时跳过另外一些元素。

(2)连接list和分割字符串(join方法和split方法)

连接list和分割字符串其实都是调用了字符串的方法,为什么强调这点,还是看代码吧~

>>>li = ["a","b","c"]>>>",".join(li)'a,b,c'>>> li = ["a",2,"000"]>>> ":".join(li)Traceback (most recent call last):  File "<pyshell#5>", line 1, in <module>    ":".join(li)TypeError: sequence item 1: expected str instance, int found>>> li = [("a","b"),("c","d")]>>> "x".join(li)Traceback (most recent call last):  File "<pyshell#7>", line 1, in <module>    "x".join(li)TypeError: sequence item 0: expected str instance, tuple found

note 2.1   join方法就是把list的每个元素连成一个字符串, 每个元素用一个分隔符隔开, 
                  这个分隔符可以是任何字符串

note 2.2   这几个例子就可以说明,为什么要 强调是字符串的方法了.
                 join只能用于元素全是字符串的list, 它不进行任何强制类型转换,
                 连接一个 存在一个或多个非字符串元素 的list, 将会引发异常
                 当然,我们可以结合list的映射,将一个list里的每个元素映射成字符串
如:
>>>li = [("name1",  "jack"),("name2","rose")]>>>" || ".join(["%s is %s" %(k,v) for k,v in li])'name1 is jack || name2 is rose'


学了join当然不能忘了split
join是将字符串的list连成一个, split就是反向的操作了
split是将一个字符串通过某个分隔符分成一个多元素list
这跟java里字符串的split效果差不多~

>>> "hello world".split("l")['he', '', 'o wor', 'd']>>> "hello world".split("l", 1) # 接受一个可选的第二参数['he', 'lo world']>>> "hello world\nni\thao".split() #没有参数的split()['hello', 'world', 'ni', 'hao']

note 2.3  注意分隔符完全被去掉了, 不会出现在返回的list中的任意元素里

note 2.4  两个连续的分隔符间也会返回一个空串

note 2.5  split的第二个参数可选, 表示要分割的次数

note 2.6 split如果没有参数,那么将按空白来分隔, 空格,回车,制表符都是空白