python 系列(2) 列表和元祖

Posted on Posted in python

> 序列:数学上,排成一列的对象,有序队列

一、列表

> 说明:list 是一种有序的集合,可以随时添加或者删除其中的某个元素,是 python 中使用最频繁的类型
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,数字字符串甚至是嵌套
列表用 [] 来定义

  1. l = [ 1,2,'a',[7,8,'ab']]  
  2. l[1] = 'bcd'  

1. 列表切片

> 语法:[start:stop:step] 开始,结束,步长

- 开始索引,从0开始。如果逆序,第一个是 -1。顾前不顾后。
- 结束索引,切片操作将渠道该索引为止,不包含该索引的值
- 步长:默认是一个接一个取值,如果为2,则表示进行隔一取一操作,步长为正,从左到右,为负,从右向左,不能为0

1. 前开后闭
2. 省略切片 start/stop/step
3. 负数索引
4. 切片之步长
5. 切片之浅拷贝

  1. >>> l = range(1,101) #创建一个1到100的列表  
  2. >>> l[:] #取全部  
  3. >>> l[0:10] #取前10个元素  
  4. >>> l[:10] #取前10个元素  
  5. >>> l[0:100:10] #步长10  
  6. [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]  
  7. >>> l[2::3] #取3的倍数  
  8. [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]  
  9. >>> l[4:50:5] #不大于50的5的倍数  
  10. [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]  
  11. >>> l[-4::2] #倒序取值  
  12. [97, 99]  
  13. >>> l[5::6][-10:] # 1~100之间最后10个6的倍数  
  14. [42, 48, 54, 60, 66, 72, 78, 84, 90, 96]  
  15. >>> l[::-1] #倒序  
  16. [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]  
  17. >>> l.reverse() #倒序  
  18. >>> l  
  19. [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]  

1. list 写在方括号之间,元素用逗号隔开
2. 和字符串一样,list可以被索引和切片
3. List 可以使用操作符拼接

  1. >>> len(l) #长度  
  2. 100  
  3. >>> l + l #相加  
  4. >>> for i in l: #可以迭代  
  5. ...     print i  
  6. ...  
  7.   
  8. >>> T = (1,2,8) #元祖强制转换为列表  
  9. >>> type(T)  
  10. <type 'tuple'>  
  11. >>> L = list(T)  
  12. >>> L  
  13. [1, 2, 8]  

- cmp(list1,list2) #字符串比较,比较第一个元素,大输出1,相等输出0,小输出-1
- max(l) #列表中的最大值
- min(l) #列表中的最小值

  1. >>> l = [111,222]    
  2. >>> l1 = [111,222]    
  3. >>> l2 = ['a','b']    
  4. >>> l2.append(l1) #添加一个对象到最后    
  5. >>> l2    
  6. ['a', 'b', [111, 222]]    
  7. >>> l2.extend(l1) #列表的末尾一次性添加每个元素    
  8. >>> l2    
  9. ['a', 'b', [111, 222], 111, 222]    
  10. >>> l2.insert(0,123) #在0索引的前面添加元素    
  11. >>> l2    
  12. [123, 'a', 'b', [111, 222], 111, 222]    
  13.   
  14. >>> l    
  15. [1, 111, 1, 222]    
  16. >>> l.pop() #移除列表中的最后一个元素    
  17. 222    
  18. >>> l    
  19. [1, 111, 1]    
  20. >>> l.pop(1) #移除指定索引元素    
  21. 111    
  22. >>> l    
  23. [1, 1]    
  24.     
  25. >>> l = [1,2,3,4,5,6] #删除值    
  26. >>> l.remove(3)    
  27. >>> l    
  28. [1, 2, 4, 5, 6]    
  29.     
  30. >>> l = [1,2,3,1,1]    
  31. >>> l.count(1) #元素的个数    
  32. 3    
  33.     
  34. >>> l.sort() #从小到大排序    
  35. >>> l    
  36. [1, 1, 1, 2, 3]    
  37. >>> l.sort(reverse=True#反序    
  38.     
  39. >>> l = [1,2,3,1,1]    
  40. >>> l2 = sorted(l) #不改变原来的序列    
  41. >>> l    
  42. [1, 2, 3, 1, 1]    
  43. >>> l2    
  44. [1, 1, 1, 2, 3]    
  45.   
  46. >>> l =[1, 111, 1, 222] #取出 1 的所有索引  
  47. >>> [x for x in range(len(l)) if l[x] == 1]  
  48. [0, 2]  

> dir(\_\_builtins__) #查找 python 的内置方法

二、元组

> 特性:元组一旦初始化就不能修改

> 元组的操作函数与 list 相仿

  1. >>> T=(1234) #一个元素的时候是 int  
  2. >>> type(T)  
  3. <type 'int'>  
  4. >>> type(T)  
  5. <type 'int'>  
  6. >>> T=(1234,) #加逗号为元祖  
  7. >>> type(T)  
  8. <type 'tuple'>  
  9.   
  10. >>> T = ('a',1,['A',1]) #异样的可变元祖,其实是不变的,是列表变了。元素不变,是指元素指向不变,元祖的 ID 不变 id(T)  
  11. >>> type(T)  
  12. <type 'tuple'>  
  13. >>> T[2][0]  
  14. 'A'  
  15. >>> T[2][0] = 'B'  
  16. >>> T  
  17. ('a', 1, ['B', 1])  
  18.   
  19. >>> l = [1,2]   #转换为元祖  
  20. >>> T = tuple(l)  
  21. >>> T  
  22. (1, 2)  
» 转载请注明来源:若我若鱼 » python 系列(2) 列表和元祖

Leave a Reply

Your email address will not be published. Required fields are marked *

seventeen + 13 =