python基础list_Python基础入门—列表list

列表

列表是一种可变的数据类型

列表中的数据类型不限

列表中的多个元素之间用逗号进行分割

最外层用[ ]括起来

列表的定义

list()来创建

s = 'python'

L = list(s)

L

['p', 'y', 't', 'h', 'o', 'n']

[]

l = ['p', 'y', 't', 'h', 'o', 'n']

l

type(l)

['p', 'y', 't', 'h', 'o', 'n']

list

列表的索引和切片

列表:有序的序列,所以每一个数据都有唯一对应的索引值。

第一个元素对应的索引值是0,和字符串是一样的

语法:列表[start:stop:step]

列表[起始位置:终止位置:步长和方向],开始的位置包含在内,终止的位置不包含在内

步长的默认值为1,当步长设置为正整数,代表方向从左往右,当步长设置为负整数,代表从后往前进行切片

起始位置和终止位置,如果不填,代表从头到尾所有数据

Examples:

list1 = ['life', 'is', 'short', 'I', 'use', 'python']

list1[2]

short

list2= [1, 2, 3, 'Hello', [1, 2, [1, [1, '新中国', 3], 3], 4, 5] ]

list2[4][2][1]

[1, '新中国', 3]

增加列表元素

常用的5种方法

list.append(要添加元素)

在列表末尾添加元素

list.extend(要添加的元素)

在列表末尾添加列表

list.insert(插入后的索引,插入的对象)

在列表制定位置插入对象

Examples:

list1 = ['life', 'is', 'short']

list2 = ['I', 'use', 'python' ]

list1.extend(list2)

lsit1

['life', 'is', 'short', 'I', 'use', 'python']

list1 = ['life', 'is', 'I', 'use', 'python']

list1.insert(2,'short')

lsit1

['life', 'is', 'short', 'I', 'use', 'python']

列表对象的删除

del 列表名[要删除元素的索引值]

删除对应索引的元素

列表名.clear()

清空列表所有元素

列表名.pop(要删除元素的索引值)

默认删除最后一个,并返回这个被删除的元素。

列表名.remove(元素名)

用于移除列表中某个值的第一个匹配项

列表对象的查找

in 和 not in

判断元素存在否

列表.index(寻找的对象,开始索引,结束索引)

元素首次出现的索引

列表.count(寻找的对象)

获得某个元素元素出现次数

Examples:

a=[1,'a', [2, 5]]

2 in a

False

a=['我','爱','北','京','天','安','门','天','安','门',]

a.count("门")

2

列表的排序

降序和升序排列

语法:列表.sort(reverse=True/False)

此方法会将列表按特定顺序重新排列

括号内的参数可以不写,默认升序排列

reverse的英文意思是翻转,如果填写了reverse=True就意味着列表会降序排列

Examples:

list1 = [1, 9, 7, 6, 5, 8, 6, 8]

list1.sort()

list1

[1, 5, 6, 6, 7, 8, 8, 9] # 比较对象数据类型一致,不同的数据类型之间没有某种维度上的大小比较

列表反转

语法: 列表.reverser()将list所有元素反转

列表的深浅拷贝

浅拷贝

浅拷贝只拷贝容器中元素的地址

浅拷贝是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。

也就是说新的容器中指向了旧的元素( 新瓶装旧酒 )这里新的容器可以是列表或字典等

深拷贝

深拷贝,完全拷贝了一个副本,容器内部元素地址都不一样(有特定要求)

对于元素为不可变类型,并没有开辟新的地址

对于元素为可变类型 ,则重新开辟新的地址

小结:对于深拷贝,目的就是要创建一个玩玩全全独立的副本,就意味着所有的一切都应该在新的地址上。

1、对于列表或者字典本身,深拷贝结果下,地址是改变了的,也就是说瓶子是换新了的 。

2、所有可变类型的元素也是有了新的地址的。

3、对于不可变类型的元素,地址没有变,那岂不是相互有影响?不,如果你改变了不可变类型,就会在新的地址下储存新的数据了,也是没有影响的。

总之,底层设计的非常合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值