Python list使用详解

list列表是python中非常重要的一种数据结构,它集合了很多优点,正确的使用能够让我们的程序简洁优美的同时实现强大的功能。

新建一个list.py文件,将下列代码逐条copy进去,运行程序,可以看到相应结果,注释部分详细说明了代码的涵义。

# coding=utf-8  

#list 定义 
li = ["a", "b", "mpilgrim", "z", "example"]       #1
print "li is: ",li
print "li[0] is: ",li[0]                          #2
print "li[4] is: ",li[4]                          #3
'''
1  首先我们定义了一个有 5 个元素的 list。注意它们保持着初始的顺序。这不是偶然。List 是一个用方括号包括起来的有序元素的集合。 
2  List 可以作为以 0 下标开始的数组。任何一个非空 list 的第一个元素总是 li[0]。  
3  这个包含 5 个元素 list 的最后一个元素是 li[4],因为列表总是从 0 开始。  
'''


#负索引
print "li[-1] is: ",li[-1]   #1
print "li[-3] is: ",li[-3]   #2
'''
1  负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 li[-1]。  
2  如果负数索引使您感到糊涂,可以这样理解:li[-n] == li[len(li) - n]。所以在这个 list 里,li[-3] == li[5 - 3] == li[2]。  
'''
#list分片(slice)
print "li[1:3] is: ",li[1:3]     #1
print "li[1:-1] is: ",li[1:-1]   #2
print "li[0:3] is: ",li[0:3]     #3
'''
1  可以通过指定 2 个索引得到 list 的子集,叫做一个 “slice” 。返回值是一个新的 list,它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始,直到但是不包括第二个 slice 索引 (这里为 li[3]) 的所有元素。  
2  如果一个或两个 slice 索引是负数,slice 也可以工作。如果对您有帮助,您可以这样理解:从左向右阅读 list,第一个 slice 索引指定了您想要的第一个元素,第二个 slice 索引指定了第一个您不想要的元素。返回的值为在其间的每个元素。 
3  List 从 0 开始,所以 li[0:3] 返回 list 的前 3 个元素,从 li[0] 开始,直到但不包括 li[3]。  
'''

#slice简写
print "li[:3] is: ",li[:3]     #1
print "li[3:] is: ",li[3:]     #2,#3
print "li[:] is: ",li[:]       #4
'''
1  如果左侧分片索引为 0,您可以将其省略,默认为 0。所以 li[:3] 同 例 3.8 “list 的分片 (slice)” 的 li[0:3] 是一样的。  
2  同样的,如果右侧分片索引是 list 的长度,可以将其省略。所以 li[3:] 同 li[3:5] 是一样的,因为这个 list 有 5 个元素。  
3  请注意这里的对称性。在这个包含 5 个元素的 list 中,li[:3] 返回前 3 个元素,而 li[3:] 返回后 2 个元素。实际上,li[:n] 总是返回前 n 个元素,而 li[n:] 将返回剩下的元素,不管 list 有多长。  
4  如果将两个分片索引全部省略,这将包括 list 的所有元素。但是与原始的名为 li 的 list 不同,它是一个新 list,恰好拥有与 li 一样的全部元素。li[:] 是生成一个 list 完全拷贝的一个简写。 
'''

#list中增加元素
li = ["a", "b", "mpilgrim", "z", "example"]
li.append("new") 
print "append result list: ",li               #1
li.insert(2,"new")
print "insert result list: ",li               #2
li.extend(["two","elements"])
print "extend result list: ",li               #3
'''
1  append 向 list 的末尾追加单个元素。  
2  insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意,list 中的元素不必唯一,现在有两个独立的元素具有 'new' 这个值,li[2] 和 li[6]。  
3  extend 用来连接 list。请注意不要使用多个参数来调用 extend,要使用一个 list 参数进行调用。在本例中,这个 list 有两个元素。 
'''

#extend(扩展)与append(追加)的差别
li = ['a', 'b', 'c']
li.extend(['d', 'e', 'f'])              #1
print "extend result is: ",li           #2
print "len extend is:",len(li)
print "li[-1] is: ",li[-1]

li = ['a', 'b', 'c']
li.append(['d', 'e', 'f'])              #3 
print "append result is: ",li
print "len extend is:",len(li)          #4
print "li[-1] is: ",li[-1]
'''
1  Lists 的两个方法 extend 和 append 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。  
2  在这里 list 中有 3 个元素 ('a'、'b' 和 'c'),并且使用另一个有 3 个元素 ('d'、'e' 和 'f') 的 list 扩展之,因此新的 list 中有 6 个元素。  
3  另一方面,append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。在这里使用一个含有 3 个元素的 list 参数调用 append 方法。  
4  原来包含 3 个元素的 list 现在包含 4 个元素。为什么是 4 个元素呢?因为刚刚追加的最后一个元素本身是个 list。List 可以包含任何类型的数据,也包括其他的 list。这或许是您所要的结果,或许不是。如果您的意图是 extend,请不要使用 append。  
'''
#list中搜索
li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
print "li.index example is: ",li.index("example")        #1
print "li.index new is: ",li.index("new")                #2
#li.index("c")        #3                    
#"c" in li            #4
'''
1  index 在 list 中查找一个值的首次出现并返回索引值。  
2  index 在 list 中查找一个值的首次 出现。这里 'new' 在 list 中出现了两次,在 li[2] 和 li[6],但 index 只返回第一个索引,2。  
3  如果在 list 中没有找到值,Python 会引发一个异常。这一点与大部分的语言截然不同,大部分语言会返回某个无效索引。尽管这种处理可能令人讨厌,但它仍然是件好事,因为它说明您的程序会由于源代码的问题而崩溃,好于在后面当您使用无效索引而引起崩溃。  
4  要测试一个值是否在 list 内,使用 in。如果值存在,它返回 True,否则返为 False 。 
'''

#从list中删除元素
li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']  
li.remove("z")                    #1
print "li.remove z is: ",li
li.remove("new")                  #2
print "li.remove new is: ",li
#li.remove("c")                   #3
li.pop()
print "li.pop is: ",li            #4
'''
1  remove 从 list 中删除一个值的首次出现。  
2  remove 仅仅 删除一个值的首次出现。在这里,'new' 在 list 中出现了两次,但 li.remove("new") 只删除了 'new' 的首次出现。  
3  如果在 list 中没有找到值,Python 会引发一个异常来响应 index 方法。  
4  pop 是一个有趣的东西。它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。请注意,这与 li[-1] 不同,后者返回一个值但不改变 list 本身。也不同于 li.remove(value),后者改变 list 但并不返回值。  
'''

#list运算符
li = ['a', 'b', 'mpilgrim']
li = li + ['example', 'new']                     #1
print "li = li + ['example', 'new'] is: ",li
li += ['two']                                    #2 
print "li += ['two'] is: ",li
li = [1, 2] * 3                                  #3
print "li is: ",li
'''
1  Lists 也可以用 + 运算符连接起来。list = list + otherlist 相当于 list.extend(otherlist)。但 + 运算符把一个新 (连接后) 的 list 作为值返回,而 extend 只修改存在的 list。也就是说,对于大型 list 来说,extend 的执行速度要快一些。  
2  Python 支持 += 运算符。li += ['two'] 等同于 li.extend(['two'])。+= 运算符可用于 list、字符串和整数,并且它也可以被重载用于用户自定义的类中 (更多关于类的内容参见 第 5 章)。  
3  * 运算符可以作为一个重复器作用于 list。li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2],即将三个 list 连接成一个。  
'''


运行结果:


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值