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]