列表 元组

Posted sleeping-cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表 元组相关的知识,希望对你有一定的参考价值。

一、列表

1. 定义列表:

变量 = [‘’,’’,’’,’’…….]

列表中可以包含列表,为子列表

2. 切片:取多个元素

>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]

>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4

[Tenglan, Eric, Rain]

>>> names[1:-1] #取下标1至-1的值,不包括-1

[Tenglan, Eric, Rain, Tom]

>>> names[0:3] 

[Alex, Tenglan, Eric]

>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样

[Alex, Tenglan, Eric]

>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写

[Rain, Tom, Amy] 

>>> names[3:-1] #这样-1就不会被包含了

[Rain, Tom]

>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个

[Alex, Eric, Tom] 

>>> names[::2] #和上句效果一样

[Alex, Eric, Tom]

3. 追加:

>>> names

[Alex, Tenglan, Eric, Rain, Tom, Amy]

>>> names.append("我是新来的")

>>> names

[Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]

4. 插入:

>>> names

[Alex, Tenglan, Eric, Rain, Tom, Amy]

>>> names.insert(1,"新来的")

>>> names

[Alex, 新来的, Tenglan, Eric, Rain, Tom, Amy]

5. 修改:

>>> names

[Alex, Tenglan, 强行从Eric前面插入, Eric, Rain , Tom, Amy]

>>> names[2] = "该换人了"

>>> names

[Alex, Tenglan, 该换人了, Eric, Rain, Tom, Amy ]

6. 删除:

1)

>>> del names[2] #删除下标为2的元素

>>> names

[Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]

2)

>>> names.remove("Eric") #删除指定元素

>>> names

[Alex, Tenglan, Rain, Tom, Amy, 我是新来的]

3)

>>> names.pop() #默认删除列表最后一个值,输入下标等同于del names[] 

我是新来的

>>> names

[Alex, Tenglan, Rain, Tom, Amy]

7. 扩展:

>>> names

[Alex, Tenglan, Rain, Tom, Amy]

>>> b = [1,2,3]

>>> names.extend(b)

>>> names

[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

del b#删除变量b

8. 拷贝:

a) 浅copy:

>>> names

[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

1) 
>>> name_copy = names.copy()

>>> name_copy

[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

2)
 >>>names[3] = ‘向鹏’ #names[‘Tom‘] = ‘向鹏’ 报错,names[]必须写下标

>>> names

[Alex, Tenglan, Rain, 向鹏, Amy, 1, 2, 3]

>>> name_copy

[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

>>> names

[Alex, Tenglan, Rain, [Tom, Amy],Tom, Amy, 1, 2, 3]

3) 
>>> names[3][0] = ‘tom’

>>> names[4] = ‘向鹏’

[Alex, Tenglan, Rain, [tom, Amy], 向鹏, Amy, 1, 2, 3]

>>> name_copy

[Alex, Tenglan, Rain, [tom, Amy],Tom, Amy, 1, 2, 3]

浅copy,只copy第一层,下一层指向原内存地址,可理解为:第一层独立copy一份,不是指向的第一层的内存地址

第二个列表拷贝第一个列表,实际上第二个列表中的每个元素只是第一个列表每一个元素的引用

浅copy三种实现方式:

Import copy

person = [‘name’,[‘saving’,100]]

1) P1 = copy.copy(person)

2) P2 = person[:]

3) P3 = list(person)

浅copy使用:

i. 创建联合账号

p1 = person[:]

p2 = person[:]

p1[0]=’alex’

p2[0]=’fengjie’

print(p1) ——>[‘alex’,[‘saving’,100]]

print(p2) ——>[‘fengjie’,[‘saving’,100]]

p1[1][1] = 50

print(p1) ——>[‘alex’,[‘saving’,50]]

print(p2) ——>[‘fengjie’,[‘saving’,50]]

b) 深copy:

import copy

name_copy = copy.deepcopy(names)

>>> name_copy

[Alex, Tenglan, Rain, [Tom, Amy],Tom, Amy, 1, 2, 3]

>>> names

[Alex, Tenglan, Rain, [tom, Amy], 向鹏, Amy, 1, 2, 3]

9. 统计:

>>> names

[Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]

>>> names.count("Amy")

2

10. 排序&翻转:

排序:

>>> names

[Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]

>>> names.sort() #排序

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序

>>> names[-3] = 1

>>> names[-2] = 2

>>> names[-1] = 3

>>> names

[Alex, Amy, Amy, Tenglan, Tom, 1, 2, 3]

>>> names.sort()

>>> names

[1, 2, 3, Alex, Amy, Amy, Tenglan, Tom]

翻转:

>>> names.reverse() #反转

>>> names

[Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]

11. 获取下标:

>>> names

[Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]

>>> names.index("Amy")

2 #只返回找到的第一个下标

>>> names[names.index("Amy")]

Amy

12.

1) 循环

for i in names:

print(i)#打印names列表

2) 步长切片

print(names[0:-1:2])

print(names[::2])

二、元组

1. 元组一旦创建不能更改,只能查(切片),又叫只读列表

2. 语法:

names = ("alex","jack","eric")

它只有2个方法,一个是count,一个是index

以上是关于列表 元组的主要内容,如果未能解决你的问题,请参考以下文章

python-列表list- 元组(tuple)- 集合(set)-字典(dict)-实例代码

循环,元组,字典,列表,代码整理

python 字典列表元组生成器的使用

如何从片段内的列表视图打开链接网址?

如何键入可以获取列表或元组的列表或元组的函数?

代码学习PYHTON 元组