Fork me on GitHub

Python基础—列表(list)和元组(tuple)


环境及版本

1
2
3
Windows 10 x64
Python 2.7
Pycharm 4.5.1

列表(list)

  • 列表是一种可变的有序集合,可以随时添加、修改、删除列表中的元素

list类型

  • list()实际上是一种类型而不是一个函数,并且使适用于所有类型的序列,可以将传入的内容变为一个列表
1
2
3
4
list_1 = list("I am wxmimperio")
print list_1

['I', ' ', 'a', 'm', ' ', 'w', 'x', 'm', 'i', 'm', 'p', 'e', 'r', 'i', 'o']

列表的操作

  • 所有序列的操作方法都适用于列表

元素赋值(修改列表)

  • 类似于C、Java里给数组赋值a[i] = 10,通过索引给元素赋值
  • 但不能给一个不存在的位置赋值,否则会产生越界
1
2
3
4
5
list_2 = [1,2,3,4,5,6,7,8,9]
list_2[1]='a'
print list_2

[1, 'a', 3, 4, 5, 6, 7, 8, 9]

删除元素

  • 通过del语句来实现元素的删除,当然del还能用于其他序列类型的删除操作
1
2
3
4
del list_2[2]
print list_2

[1, 'a', 4, 5, 6, 7, 8, 9]

分片赋值操作

  • 结合分片操作,可以一次性给多个元素赋值
1
2
3
4
5
list_2[6:] = list("hello")
print list_2

//从index=6开始,替换了89,并添加了llo
[1, 'a', 4, 5, 6, 7, 'h', 'e', 'l', 'l', 'o']
  • 也可以在不替换元素的情况下直接插入元素
1
2
3
4
5
list_3 = [1,6]
list_3[1:1] = [2,3,4,5]
print list_3

[1, 2, 3, 4, 5, 6]
  • 也可以用来删除元素,利用[]空列表完成
1
2
3
4
list_3[1:4] = []
print list_3

[1, 5, 6]

列表的方法

  • 方法是一个与某些对象相关联的函数
  • 对象名.方法名(参数),进行调用

append方法

  • 用于在列表的末尾添加新元素
  • 用此方法进行操作时,是直接修改原来的列表,也就是新列表和旧列表指向同一块地址
1
2
3
4
5
list_4 = ['a','b','c','d','e','f','g']
list_4.append(1)
print list_4

['a', 'b', 'c', 'd', 'e', 'f', 'g', 1]

count方法

  • 用来统计某个元素在列表中出现的次数
  • 返回int类型的数值
1
2
3
4
conut = list_4.count('a')
print conut

1

extend方法

  • 可以在列表的末尾一次性添加多个元素
  • 此方法修改了原来的列表
1
2
3
4
5
6
list_4.extend([2,3,4])
print list_4
print (len(list_4))

['a', 'b', 'c', 'd', 'e', 'f', 'g', 1, 2, 3, 4]
11

index方法

  • 可以从列表中找出索引位置上元素的值
  • 若索引的元素不再列表中,则会抛出异常
1
2
3
4
print list_4.index('b')
#print list_4.index('xx')

1

insert方法

  • 用于将元素插入到索引对应的位置
1
2
3
4
list_4.insert(2,'wxm')
print list_4

['a', 'b', 'wxm', 'c', 'd', 'e', 'f', 'g', 1, 2, 3, 4]

pop方法

  • 用于移除列表中的一个元素,默认是最后一个,并且返回该元素的值
  • pop方法是唯一一个既能改变列表又能返回元素之的方法
  • 通过pop和append方法的组合,可以实现后进先出(LIFO)的数据结构——栈
1
2
3
4
5
print list_4.pop()
print list_4.pop(2)

4//弹出最后一个元素
wxm//弹出index为2的元素

remove方法

  • 用于移除列表中某个元组值的第一个匹配项
  • 此方法没有返回值,但是修改了原来的列表
1
2
3
4
5
6
list_4.insert(3,1)
list_4.remove(1)
print list_4

//只删除了新加入的,位于前面的1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 1, 2, 3]

reverse方法

  • 将列表中的元素逆序
  • 该方法也没有返回值,但是改变了原列表
  • 利用reversed可以产生一个迭代器
1
2
3
4
list_4.reverse()
print list_4

[3, 2, 1, 'g', 'f', 'e', 'd', 'c', 'b', 'a']
1
2
3
4
for x in reversed(list_4):
print x,

a b c d e f g 1 2 3

sort方法

  • 用于给列表中的元素排序,默认升序
  • 该方法没有返回值,但是改变了原来列表
  • 利用sorted可以产生一个迭代器
1
2
3
4
5
6
list_5 = [88,1,9,5,20]
list_5_1 = list_5[:]
list_5_1.sort()
print list_5_1

[1, 5, 9, 20, 88]
  • 多因素排序,可选参数key和reverse

  • key表示排序标准,按照什么逻辑进行排序,如长度等

  • reverse是布尔值True or False,用来指明排序是否需要逆序
1
2
3
4
5
list_6 = ['xx','ab','g','y23','i85dfa']
list_6.sort(key=len,reverse=True)
print list_6

['i85dfa', 'y23', 'xx', 'ab', 'g']

元组

  • 元组和列表一样,也是一种序列
  • 不同的是元组的元组值一旦确定就 不能 被修改
  • 要创建元组,必须使用逗号分隔
1
2
3
4
5
6
7
tuple_1 = 1,2,3
print tuple_1
tuple_2 = 5,
print tuple_2

(1, 2, 3)
(5,)
  • 空元组则用()表示
1
2
3
4
tuple_empty = ()
print tuple_empty

()

tuple类型

  • 同list类型一样,以一个序列为参数,将传入的参数转化为元组类型
1
2
3
print tuple([1,2,3,4,5,6])

(1, 2, 3, 4, 5, 6)

元组的操作

  • 元组的操作只有创建和访问,因为不能修改,所以它没有append(),insert()这样的方法
1
2
3
4
5
6
tuple_3 = tuple('tuple')
print tuple_3[1]
print tuple_3[2:5]

u
('p', 'l', 'e')

多元化元组

  • 可以通过元组和其他的序列组合,完成元组的“修改”
1
2
3
4
5
6
tuple_4 = tuple([1,2,3,['a','b','c']])
tuple_4[3][0] = 'xx'
tuple_4[3][1] = 'yy'
print tuple_4

(1, 2, 3, ['xx', 'yy', 'c'])

  • 元组可以在映射(集合的成员)中当键的作用,因为它不可改变,列表则不行
  • 元组作为很多内建函数和方法的返回值存在,能保证代码的安全性

参考:Python基础教程(第2版·修订版)


转载请注明出处


Thank you for your support.