Python的序列
序列包括三种:字符串,列表,元组
序列的主要特点是:索引操作符合切片操作符
1,索引操作符
通过下标找出序列的值
a是字符串‘abcde’
In [14]: a
Out[14]: 'abcde'
找到下标是0的值
In [15]: a[0]
Out[15]: 'a'
找到下标是3的值
In [16]: a[3]
Out[16]: 'd'
2,切片操作符
通过切片能找出其中的一串
切片,从头到尾
In [19]: a[:]
Out[19]: 'abcde'
切片,取下标从1到4,4不取
In [20]: a[1:4]
Out[20]: 'bcd'
切片。取下标从0到4,4不取
In [21]: a[:4]
Out[21]: 'abcd'
切片。取下标从0到4,4不取
In [22]: a[0:4]
Out[22]: 'abcd'
切片,从头到尾,隔2取1
In [23]: a[::2]
Out[23]: 'ace'
切片,从头取到倒数第一个,最后一个不取
In [24]: a[:-1]
Out[24]: 'abcd'
切片,从-1取到-2,-2不取
In [25]: a[-2:-1]
Out[25]: 'd'
切片,切片,从尾取到头
In [26]: a[::-1]
Out[26]: 'edcba'
字符串
字符串,赋值的时候用‘’或“”或三‘’括起来
In [1]: a = 'abcde'
字符串的操作
len() : 求字符串长度
+ :连接两个字符串
* :重复字符串元素
in :判断元素是否在字符串中
max() : 返回字符串中的最大值
min() : 返回字符串中的最小值
cmp(x,y) : 比较两字符串的大小,x=y,返回0,x<y,返回-1,x>y,返回1
例
In [1]: a = 'abcde'
In [2]: a
Out[2]: 'abcde'
In [3]: a + 'f'
Out[3]: 'abcdef'
In [4]: len(a)
Out[4]: 5
In [5]: a
Out[5]: 'abcde'
In [6]: a * 2
Out[6]: 'abcdeabcde'
In [7]: 'a' in a
Out[7]: True
In [8]: max(a)
Out[8]: 'e'
In [9]: min(a)
Out[9]: 'a'
In [10]: cmp(a,'abcde')
Out[10]: 0
In [11]: cmp(a,'abcdef')
Out[11]: -1
In [12]: cmp(a,'abcd')
Out[12]: 1
元组
元组和字符串一样,是不可变的,不能将里面的重新赋值
元组用()表示
当元组只有一个元素时,需要加上,才能表示元组
例:
In [34]: t1 = (1,2,3)
In [35]: t1
Out[35]: (1, 2, 3)
In [36]: print t1
(1, 2, 3)
In [37]: type(t1)
Out[37]: tuple
In [38]: t1 = (1)
In [39]: type(t1)
Out[39]: int
In [40]: t1=(1,)
In [41]: type(t1)
Out[41]: tuple
元组的取值也是通过下标来取
例
In [42]: t = (a,'b','c')
In [47]: t[1]
Out[47]: 'b'
In [48]: t[0]
Out[48]: 'abcde'
元组的方法
count:判断所给的值是否在元组里面,在返回1,不在返回0
例
In [42]: t = (a,'b','c')
In [46]: t.count('b')
Out[46]: 1
In [51]: t.count(a)
Out[51]: 1
In [52]: t.count('a')
Out[52]: 0
index:判断所给的值所在元组的下标,在,返回下标,不在,返回错误
例
In [53]: t.index(b)
-------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-53-d60c36dee4f9> in <module>()
----> 1 t.index(b)
NameError: name 'b' is not defined
In [54]: t.index('b')
Out[54]: 1
In [55]: t.index('c')
Out[55]: 2
列表
列表是可变类型的有序的数据结构
列表用[]来定义
创建列表:
1,通过手动创建
手动创建空列表
In [56]: list1 = []
In [57]: type(list1)
Out[57]: list
手动创建列表,并给列表赋值
In [58]: list2 = [1,'a','b',['hello','python'],(1,)]
In [59]: type(list2)
Out[59]: list
In [60]: list2
Out[60]: [1, 'a', 'b', ['hello', 'python'], (1,)]
2,通过list函数创建列表
In [61]: list3 = list()
In [62]: type(list3)
Out[62]: list
In [63]: list3
Out[63]: []
列表操作
取值,通过切片和索引
例
In [58]: list2 = [1,'a','b',['hello','python'],(1,)]
In [64]: list2[1]
Out[64]: 'a'
In [66]: list2[:3]
Out[66]: [1, 'a', 'b']
-
添加
通过append方法添加
append(…)
L.append(object) – append object to end
添加对象,从最后添加
例In [85]: list2 Out[85]: ['b', 'b', ['hello', 'python'], (1,)] 通过append方法,从最后添加 In [86]: list2.append(1) In [87]: list2 Out[87]: ['b', 'b', ['hello', 'python'], (1,), 1]
通过insert方法添加
insert(…)
L.insert(index, object) – insert object before index
添加对象,从所给下标处添加
例In [92]: list2 Out[92]: ['b', 'b', ['hello', 'python'], (1,), 1, 'a'] 添加对象,从下标为1位置添加 In [93]: list2.insert(1,'a') In [94]: list2 Out[94]: ['b', 'a', 'b', ['hello', 'python'], (1,), 1, 'a']
通过extend方法添加
extend(…)
L.extend(iterable) – extend list by appending elements from the iterable
添加一个可迭代的,可迭代的可以指字符串,元组,列表,凡是可迭代的都可以通过遍历for访问
例In [112]: list3 Out[112]: [(1,), 'b', 'b', 'a', 'a', ['hello', 'python']] In [113]: list3.extend(range(5)) In [114]: list3 Out[114]: [(1,), 'b', 'b', 'a', 'a', ['hello', 'python'], 0, 1, 2, 3, 4]
-
删除
通过list方法remove来删除
remove(…)
L.remove(value) – remove first occurrence of value.
Raises ValueError if the value is not present.
删除第一个可以找到的值,如果值不存在,就抛出一个异常
例list2的值 In [70]: list2 Out[70]: [1, 'a', 'b', ['hello', 'python'], (1,), 1] 删除一个1 In [71]: list2.remove(1) In [73]: list2 Out[73]: ['a', 'b', ['hello', 'python'], (1,), 1] 删除2时跑了一个异常 In [72]: list2.remove(2) ------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-72-88aa77195043> in <module>() ----> 1 list2.remove(2) ValueError: list.remove(x): x not in list
通过del来删除
例In [73]: list2 Out[73]: ['a', 'b', ['hello', 'python'], (1,), 1] 通过del来删除下标为4的值 In [74]: del list2[4] In [75]: list2 Out[75]: ['a', 'b', ['hello', 'python'], (1,)] 当然,del还能删除变量
-
修改
通过下标来修改值
例In [77]: list2 Out[77]: ['a', 'b', ['hello', 'python'], (1,)] 通过下标来修改下标为0的值 In [78]: list2[0]='b' In [79]: list2 Out[79]: ['b', 'b', ['hello', 'python'], (1,)]
-
查找
通过in 和not in 来判端元素在不在列表里面
例In [79]: list2
Out[79]: [‘b’, ‘b’, [‘hello’, ‘python’], (1,)]
In [81]: ‘b’ in list2
Out[81]: TrueIn [82]: 'c’in list2
Out[82]: FalseIn [83]: ‘b’ not in list2
Out[83]: False
list的其他方法
sort方法:列表排序
sort(…)
L.sort(cmp=None, key=None, reverse=False) – stable sort IN PLACE;
cmp(x, y) -> -1, 0, 1
例
In [99]: list3
Out[99]: ['b', 'a', 'b', ['hello', 'python'], (1,), 1, 'a']
In [101]: list3.sort()
In [102]: list3
Out[102]: [1, ['hello', 'python'], 'a', 'a', 'b', 'b', (1,)]
reverse方法:翻转元素
reverse(…)
L.reverse() – reverse IN PLACE
例
In [104]: list3
Out[104]: [1, ['hello', 'python'], 'a', 'a', 'b', 'b', (1,)]
In [106]: list3.reverse()
In [107]: list3
Out[107]: [(1,), 'b', 'b', 'a', 'a', ['hello', 'python'], 1]
pop方法:删除一个元素并返回值,如果没有下标,就抛出异常
pop(…)
L.pop([index]) -> item – remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
例
In [109]: list3
Out[109]: [(1,), 'b', 'b', 'a', 'a', ['hello', 'python'], 1]
In [110]: list3.pop()
Out[110]: 1
In [111]: list3
Out[111]: [(1,), 'b', 'b', 'a', 'a', ['hello', 'python']]