Python 列表操作

列表list

一个队里,一个排列整齐的队伍

列表内的个体称作元素,由若干元素组成列表

元素可以是任意对象(数字,字符串,对象,列表等)

列表内元素有顺序,可以使用索引

线性的数据结构

使用 [] 表示

列表是可变的

 

列表 list 定义,初始化

list()  # 定义一个空列表

list(iterable)  # 从一个可迭代的对象初始化列表

列表不能一开始就定义大小 

 

 

列表的查

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[1:4])
结果:
['tom', 'jack', 'james']

注意:列表的切片的下标以 0 为开始。即: 下标0 --> klvchen,下标1 --> tom,..... 下标5 --> lucy。

          列表的切换顾头不顾尾,例如:a [1:4],则不会取到列表下标为4的元素

 

从左到右,取到最后:

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[1:])

结果:
['tom', 'jack', 'james', 'lily', 'lucy']

 

从左到右,取到倒数第二个值:

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[1:-1])
结果:
['tom', 'jack', 'james', 'lily']

 

从左到右,隔一个去取:

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[1::2])
结果:
['tom', 'james', 'lucy']

 

从右到左,一个一个去取:

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[3::-1])
结果:
['james', 'jack', 'tom', 'klvchen']

 

从右到左去取

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a[-2:-4:-1])
结果:
['lily', 'james']

 

迭代

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
for k,v in enumerate(a):
    print(k, v)

结果:
0 klvchen
1 tom
2 jack
3 james
4 lily
5 lucy

 

列表的增

append 方法默认插到最后一个位置

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
a.append("mary")
print(a)
结果:
['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy', 'mary']

 

insert 方法将数据插入到任意一个位置

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
a.insert(1,"mary")
print(a)
结果:
['klvchen', 'mary', 'tom', 'jack', 'james', 'lily', 'lucy']

 

extend 方法可在列表的末尾一次性追加另一个序列中的多个值

a = ["klvchen", "tom", "jack"]
b = ["james", "lily", "lucy"]
a.extend(b)
print(a)
结果:
['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy']

 

*,重复操作,将本列表表示元素重复 n 次,返回新的列表

list1 = [1, 2, 3]
list2 = list1 * 2
print(list2)
结果:
[1, 2, 3, 1, 2, 3]

+,连接操作,将两个列表连接起来,产生新的列表,原列表不变

list3 = [4, 5, 6]
list4 = list1 + list3
print(list4)
结果:

[1, 2, 3, 4, 5, 6]

 

 

列表的改

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
a[1]="tom2"
print(a)
结果:
['klvchen', 'tom2', 'jack', 'james', 'lily', 'lucy']
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
a[1:3]=["tom2", "jack2"]
print(a)
结果:
['klvchen', 'tom2', 'jack2', 'james', 'lily', 'lucy']

 

列表的删

remove 方法

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
a.remove("tom")
print(a)
结果:
['klvchen', 'jack', 'james', 'lily', 'lucy']

 

pop 方法

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
b = a.pop(1)
print(a)
print(b)
结果:
['klvchen', 'jack', 'james', 'lily', 'lucy']
tom

注意 pop 方法会返回删除的元素

 

del 方法

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
del a[1]
print(a)
结果:
['klvchen', 'jack', 'james', 'lily', 'lucy']
a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
del a
print(a)
结果:
NameError: name 'a' is not defined

注意:del a 把列表a从内存删除了,所以打印 a 列表程序会报错

 

clear()

清除列表所有元素,剩下一个空列表 

 

列表元素的统计

list = ['a', 'a', 'b', 'c']
res = list.count('a')
print(res)
结果:
2

 

列表复制

 copy() 

shadow copy 影子拷贝,也叫浅拷贝,遇到引用类型,只是复制了一个引用而已,返回一个新的列表

lst0 = list(range(4))
lst1 = lst0.copy()
print(lst0 == lst1)  # 判断 lst0 的元素和 lst1 的元素是否一样
print(lst1 is lst0)  # 判断 lst0, lst1 的内存地址是否一样

结果:

True
False

 深拷贝

copy 模块提供了 deepcopy

import copy

lst0 = [1, [2, 3, 4], 5]

lst5 = copy.deepcopy(lst0)

lst5[1][1] = 20

print(lst5 == lst0)


False

 

 

 

列表的排序

sort 方法

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a)
a.sort()
print(a)
结果:
['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy']
['jack', 'james', 'klvchen', 'lily', 'lucy', 'tom']

reverse 方法

a = ["klvchen", "tom", "jack", "james", "lily", "lucy"]
print(a)
a.reverse()
print(a)
结果:
['klvchen', 'tom', 'jack', 'james', 'lily', 'lucy']
['lucy', 'lily', 'james', 'jack', 'tom', 'klvchen']
posted @ 2018-03-14 15:26  klvchen  阅读(363)  评论(0编辑  收藏  举报