发表于 2018-8-8 11:37:24

Python中的元组和列表

  元组
  序列
  字符串、列表和元组都是序列
  序列的两个主要特点是索引操作符和切片操作符.


[*]  索引操作符让我们可以从序列中抓取一个特定的项目。
[*]  切片操作符让我们能够获取序列的一个切片,即一部分序列。

  序列的基本操作:

[*]  len() :求序列长度
  In : a = '1234;5lasdfasdf'
  In : len(a)
  Out: 15

[*]  +:连接2个序列(两个str)
  In : a = 'hello'
  In : b = 'world'
  In : print a+b
  helloworld
  In :

[*]  *:重复序列元素(*后面根的是int)
  In : print a * 3
  hellohellohello
  In :

[*]  in:判断元素是否在序列中
  In : print a
  
  In : 3 in a
  Out: True

[*]  max():返回最大值
  In : print a
  
  In : print max(a)
  5

[*]  min():返回最小值
  In : print a
  
  n : print min(a)
  1

[*]  cmp(x,y):比较两个序列是否相等
  In : a
  Out:
  In : b =
  In : cmp (a,b)
  Out: 0
  In : cmp(a,'1,3,3,5')
  Out: -1
  In : cmp(a,)
  Out: 0
  In : cmp(a,a)
  Out: 0
  In : cmp(a,a)
  Out: -1
  In : cmp(a,a)
  Out: 1
  In :
  元组:
  元组和列表十分相似
  元组和字符串一样是不可以变的。


[*]  元组可以存储一系列的值
[*]  元组通常用在用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。

  In : t = (1,3,5,'a',(1,))
  In : type(t)
  Out: tuple
  In : print t
  (1, 3, 5, 'a', (1,))
  In :
  元组操作:
  元组和字符串一样属于序列类型,可以通过索引和切片操作
  元组值不可变
  无组的拆分
  t = (1,2,3)
  a,b,c=t
  In : t = (1, 3, 5, 'a', (1,))
  In : print t
  (1, 3, 5, 'a', (1,))
  In : t
  Out: 1
  In : print t
  (1, 3, 5, 'a', (1,))
  In : t = 2
  ---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  <ipython-input-41-29b3302c4f70> in <module>()
  ----> 1 t = 2
  TypeError: 'tuple' object does not support item assignment
  In :
  元组中引用变量:
  In : a
  Out:
  In : t = (a,'ab')
  In : t
  Out: (, 'ab')
  In :
  元组切片:
  In : t
  Out: (, 'ab')
  In : first,second = t
  In : first
  Out:
  In : second
  Out: 'ab'
  In : t
  Out: (1, 2, 3)
  In : t.index(1)
  Out: 0
  In : t.index(2)
  Out: 1
  In : t.index(3)
  Out: 2
  In : t = (1,3,3,2,5)
  In : t.index(5)
  Out: 4
  In : t.count(3)
  Out: 2
  In : t.count(5)
  Out: 1
  列表
  列表内可变
  列表(list)是处理一组有序项目的数据结构,即要以在列表中存储一个序列的项目。
  列表显示是可变类型的数据
  创建列表:
  list1 = []
  list2 =
  list3 = list()
  In : list1 = []
  In : type(list1)
  Out: list
  In : list
  list   list1
  In : list2 = list()
  In : type(list2)
  Out: list
  In : list
  list   list1list2
  In : list2
  Out: []
  In : list
  list   list1list2
  In : list3 = ['a',1,2,(1,),]
  In : list3
  Out: ['a', 1, 2, (1,), ]
  In : len(list3)
  Out: 5
  In :
  In : list3[-1]
  Out:
  In : list3
  Out: 'a'
  In : list3
  Out: ['a', 1, 2, (1,), ]
  In : list3
  Out: ['a', 1, 2]
  In : list3 = 'b'
  In : list3
  Out: ['b', 1, 2, (1,), ]
  列表操作:
  取值:
  切片和索引
  添加:(append()默认加到最后一个元素)
  list.append()
  In : list3
  Out: ['b', [], (1,), 1]
  In : list3
  Out: []
  In : list3.append('abc')
  In : list3
  Out: ['b', ['abc'], (1,), 1]
  追加
  In : list3.append(333)
  In : list3
  Out: ['b', 1, 2, (1,), , 333]
  In :
  In : list3
  Out: ['b', 1, 2, (1,), , 333]
  In : list2
  Out: []
  In : list2 =
  In : list2 + list3
  Out: , 333]
  In :
  In : (list2 + list3)*2
  Out:
  [1111,
  222,
  333,
  'b',
  1,
  2,
  (1,),
  ,
  333,
  1111,
  222,
  333,
  'b',
  1,
  2,
  (1,),
  ,
  333]
  In :
  删除
  del list[]
  list.remove(list[])
  In : list2
  Out:
  In : del list
  list   list1list2list3
  In : del list2
  In : list2
  Out:
  In : list2
  Out:
  In : list2.remove(list2)
  In : list2
  Out:
  修改:
  list[] = x
  In : list2
  Out:
  In : list2 = 0000
  In : list2
  Out:
  In : list2
  Out:
  In : list2.insert(1,66666)
  In : list2
  Out:
  In :
  查找:
  var in list
  In : list2
  Out:
  In : 1 in list2
  Out: False
  In : 1111 in list2
  Out: True
  In :
  排序:
  In : list3
  Out: ['b', ['abc'], (1,), 1]
  In : list3.sort()
  In : list3
  Out: , 'b', (1,)]
  In :
  反转:
  In : list3
  Out: , 'b', (1,)]
  In : list3.reverse()
  In : list3
  Out: [(1,), 'b', ['abc'], 1]
  In :
  POP默认删除最后一个,pop删除对应位置.
  In : list2
  Out:
  In : list2.pop(1)
  Out: 66666
  In : list2
  Out:
  In : list2.pop()
  Out: 33434
  In : list2.pop()
  Out: 22233434
  In : list2
  Out:
  In :
  迭代:
  字符串,元组都是可迭代的,都可以通过for循环去访问。
  In : list3
  Out: ['b', ['abc']]
  In : range(5)
  Out:
  In : list3.extend(range(5))
  In : list3
  Out: ['b', ['abc'], 0, 1, 2, 3, 4]
  In : list3.extend('5555')
  In : list3
  Out: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5']
  In : list3.extend('a')
  In : list3
  Out: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5', 'a']
  In : list3.extend('1234')
  In : list3
  Out: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5', 'a', '1', '2', '3', '4']
  In :
  tab补齐:
   
  python 一切都是对象
   

  帮助:
  help(t.index)

  Help on built-in function index:
  index(...)
  L.index(value, ]) -> integer -- return first index of value.
  Raises ValueError if the value is not present.
  (END)
  异常:
   
  练习:
  现有列表
  list1 = ['XXXX', 'b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX']
  list2 = ['e', 'f', 'g']
  要求对其做以下操作:
  1. 取出 ‘XXXX’ 中间的部分,形成一个新的列表list3
  In : list1 = ['XXXX', 'b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX']
  In : list3 = list1
  In : print list3
  ['b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3']
  In :
  2. 对list3 做一下几部操作
  1)删除特殊符号
  In : del list3
  In : print list3
  ['b', 3, 'c', 3, 'a', 3, '3', 3, 'aa', '3']
  In :
  2)统计 3 在list3中出现的次数
  In : list3.count(3)
  Out: 4
  In :
  3)用最简短的代码去除list3中 26个字母以外的元素(要求只能对list3操作)
  list3 = list3
  4)对list3排序
  In : list3.sort()
  In :print list3
  Out:
  In :
  5)在末尾追加'd',并把list2追加到list3
  In : list3.append('d')
  In :print list3
  Out:
  In :
  In : list2
  Out: ['e', 'f', 'g']
  In : list3.append(list2)
  In : printlist3
  Out: ]
  3. 现有两个变量
  a = ('h',)
  b = ('h')
  1)将a和b分别追加到上一题的list3中,观察有什么区别
  In : a = ('h',)
  In : b = ('h')
  In : printlist3
  Out: ]
  In : list3.append(a)
  In :print list3
  Out: , ('h',)]
  In : del list3[-1]
  In :print list3
  Out: ]
  In : list3.append(b)
  In :print list3
  Out: , 'h']
  In :
  2)将1生成的list3转换成元组(扩展:自己搜索方法)
  In : t = (list3,)
  In : type(t)
  Out: tuple
  In : print t
  (, 'h'],)
  3)打印出只有一个元素'h'的元组,在2中生成的元组中的索引
  print tuple(list3).index(h)
页: [1]
查看完整版本: Python中的元组和列表