python列表和元组操作

列表

  列表(list)是python以及其他语言中最常用到的数据结构之一。Python使用中括号[ ]来解析列表。列表是可变的(mutable)—可以改变列表的内容。

定义列表

names = ['musker','jack','jenney']

可以使用list函数常见一个列表

>>> list('hello')
['h', 'e', 'l', 'l', 'o']

通过下标访问列表中的元素,下标从0开始

>>> names[0]
'musker'
>>> names[1]
'jack'
>>> names[2]
'jenney'

 切片:取出多个元素

>>> names = ['musker', 'jack', 'jenney','zhangsan','lisi']
>>> names[1:4]    #取出下标1到4之间的元素,包括1,但不包括4
['jack', 'jenney', 'zhangsan']
>>> names[1:-1]    #取出下标1到-1(从列表最后开始)之间的元素,包括1,但不包括-1
['jack', 'jenney', 'zhangsan']
>>> names[0:3]
['musker', 'jack', 'jenney']
>>> names[:3]    #效果同上
['musker', 'jack', 'jenney']
>>> names[0::2]    #2的含义是每隔一个元素取出一个
['musker', 'jenney', 'lisi']
>>> names[::2]    #同上
['musker', 'jenney', 'lisi']
切片

  追加

>>> names
['musker', 'jack', 'jenney', 'zhangsan', 'lisi']
>>> names.append('new name')
>>> names
['musker', 'jack', 'jenney', 'zhangsan', 'lisi', 'new name']
追加

 插入

>>> names
['musker', 'jack', 'jenney', 'zhangsan', 'lisi', 'new name']
>>> names.insert(2,'强行从jeeney前面插')
>>> names
['musker', 'jack', '强行从jeeney前面插', 'jenney', 'zhangsan', 'lisi', 'new name']
插入

  修改

>>> names
['musker', 'jack', '强行从jeeney前面插', 'jenney', 'zhangsan', 'lisi', 'new name']
>>> names[3] = '该换人了'
>>> names
['musker', 'jack', '强行从jeeney前面插', '该换人了', 'zhangsan', 'lisi', 'new name']
修改

  删除

>>> names
['musker', 'jack', '强行从jeeney前面插', '该换人了', 'zhangsan', 'lisi', 'new name']
>>> names.pop()    #删除末尾的一个元素
'new name'
>>> names
['musker', 'jack', '强行从jeeney前面插', '该换人了', 'zhangsan', 'lisi']
>>> names.pop(1)    #删除指定下标的元素
'jack'
>>> names
['musker', '强行从jeeney前面插', '该换人了', 'zhangsan', 'lisi']
>>> names.remove('zhangsan')    #删除指定的元素(没有返回值)
>>> names
['musker', '强行从jeeney前面插', '该换人了', 'lisi']
删除

 扩展

>>> names
['musker', '强行从jeeney前面插', '该换人了']
>>> names2 = [1,2,3,4,5]
>>> names.extend(names2)
>>> names
['musker', '强行从jeeney前面插', '该换人了', 1, 2, 3, 4, 5]
扩展

  统计:统计指定元素在列表中出现的次数

>>> num
[1, 3, 4, 56, 2, 4, 1, 22, 3, 4, 1, 2, 31, 3]
>>> num.count(3)
3
统计

 排序&翻转

>>> names
['zhangsan', 'lisi', 'wangwu', 'maliu', 'Tom', 'Jack', 'Mzc', '3', '4', 'Mzc']
>>> names.reverse()        #翻转
>>> names
['Mzc', '4', '3', 'Mzc', 'Jack', 'Tom', 'maliu', 'wangwu', 'lisi', 'zhangsan']
--------------------------------------------------------------------------------
>>> names.sort()    #排序,正序
>>> names
['3', '4', 'Jack', 'Mzc', 'Mzc', 'Tom', 'lisi', 'maliu', 'wangwu', 'zhangsan']
>>> names.sort(reverse=True)    #倒序
>>> names
['zhangsan', 'wangwu', 'maliu', 'lisi', 'Tom', 'Mzc', 'Mzc', 'Jack', '4', '3']
排序&翻转

  获取下标

>>> names
['zhangsan', 'wangwu', 'maliu', 'lisi', 'Tom', 'Mzc', 'Mzc', 'Jack', '4', '3']
>>> names.index('Tom')
4
获取下标

 拷贝

>>> names
['zhangsan', 'lisi', 'wangwu', 'maliu', 'Tom', 'Jack', 'Mzc', '3', '4', 'Mzc']
>>> names_copy = names.copy()
>>> names.pop()
'Mzc'
>>> names
['zhangsan', 'lisi', 'wangwu', 'maliu', 'Tom', 'Jack', 'Mzc', '3', '4']
>>> names_copy
['zhangsan', 'lisi', 'wangwu', 'maliu', 'Tom', 'Jack', 'Mzc', '3', '4', 'Mzc']
拷贝

 这里的copy是浅copy

 copy的探究:戳这里

列表生成式:

普通写法1
a = [1,3,4,6,7,7,8,9,11]

普通写法2
for index,i in enumerate(a):
    a[index] +=1
print(a)

生成式写法
a = [i+1 for i in range(10)]
print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

元组

  元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表;

  元组的意义:元组可以在映射(和集合的成员)中当作键使用——而列表则不行;元组作为很多内建函数和方法的返回值存在。

创建元组的语法很简单:如果你用逗号分隔了一些值,那么你就自动创建了元组

>>> 1, 2, 3  
(1, 2, 3)

 元组也是(大部分时候是)通过圆括号括起来的

>>> (1,2,3)  
(1, 2, 3)

 实现包括一个值的元组有些奇特——必须加个逗号

>>> 42,  
(42,)  
>>> (42,)  
(42,)

 tuple函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转化为元组

>>> tuple([1, 2, 3])  
(1, 2, 3)

 它只有2个方法,一个是count,一个是index,对,还有切片的功能,完毕。

原文地址:https://www.cnblogs.com/zhichaoma/p/7490721.html