Python之列表

一、什么是列表?

列表是Python中非常重要的内置数据类型,由一系列元素组成。列表和元组也叫做序列,字典又可以叫做映射,元组和字典后续讲解。

创建方式:使用中括号或者调用list(list是指类型,而不是函数)

[11,'22','fer',{'e':3,'f':4}]
print(list('Hello'))#输出:['H', 'e', 'l', 'l', 'o']

使用字符串的join方法,将列表转换成字符串。

a = ['H', 'e', 'l', 'l', 'o']print(''.join(a))#输出:Hello

列表:a = ['a', 'b', 'c', 'd', 'e', 'f']

列表特点:有序,索引对应一个数据,可以保存重复数据,可以保存任意数据类型。

二、列表的操作

1、切片

格式:列表名[start: stop: step],start开始位置(可为正负),stop结束位置(可为正负),step步长(可为正负)

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(num[8:12])  ##[9, 10]   其中stop可以超过最大索引​​​​​​​print(num[-3:])  ##[8, 9, 10]print(num[:3])  ##[1, 2, 3]print(num[:])  ##[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 复制整个切片

step步长为正 从左向右操作,为负 从右向左操作。​​​​​​​

print(num[0:10:1])   ##[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(num[0:10:2])   ##[1, 3, 5, 7, 9]print(num[10:0:-2])  ##[10, 8, 6, 4, 2]​​​​​​​print(num[-3:0]) ##[]   注意:步长为正,上例中执行切片操作时,如果第一个索引指定的元素位于第二个索引指定的元素后面(在这里,倒数第3个元素位于第1个元素后面),结果就为空序列。print(num[3:6:-1]) ##[]注意:步长为负,上例中执行切片操作时,如果第一个索引指定的元素位于第二个索引指定的元素后面(在这里,倒数第3个元素位于第1个元素后面),结果就为空序列。
当步长为负数时不为空print(num[-3:0:-1])输出:[8, 7, 6, 5, 4, 3, 2]

2、序列相加:不能拼接不同类型的序列。​​​​​​​

print([1, 2, 3] + [4, 5, 6])  输出:[1, 2, 3, 4, 5, 6]
print('hello,' + 'world!')输出:'hh, www'

3、乘法:将序列与数x相乘时,将重复这个序列x次来创建一个新序列​​​​​​​

print('python' * 3)#输出:pythonpythonpython
print([18] * 3)#输出:[18, 18, 18]
#空列表:[]#包含3个元素,但是没有内容的列表[None] * 3#输出:[None, None, None]

4、内置函数len、min和max

其中函数len返回序列包含的元素个数,而min和max分别返 回序列中最小和最大的元素​​​​​​​

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(len(num))  #10print(max(num))  #10print(min(num))  #1
num = 'fasfd'print(len(num))  #5print(max(num))  #sprint(min(num))  #a作用于字符串最小最大元素对应字符的ASCII码

5、列表元素增加操作

append方法用于将一个对象附加到列表末尾。​​​​​​​

list1= [1, 2, 3, 4, 5]list1.append(6)print(list1)#输出:[1, 2, 3, 4, 5, 6]

extend方法能够同时将多个值附加到列表末尾,为此可将这些值组成的序列作为参数提供给方法extend。可使用一个列表来扩展另一个列表。​​​​​​​

a = [1, 2, 3]b = [4, 5, 6]a.extend(b)  print(a)输出:[1, 2, 3, 4, 5, 6]

使用加号扩充列表​​​​​​​

a = [1, 2, 3]b = [4, 5, 6]a + bprint(a)输出:[1, 2, 3, 4, 5, 6]

鉴于常规使用加号的拼接必须使用a和b的副本创建一个新列表,拼接的效率将比 extend低。a = a + b,拼接操作并非就地执行的,即它不会修改原来的列表。

要获得与extend相同的效果, 可将列表赋给切片,如下所示​​​​​​​

a = [1, 2, 3]b = [4, 5, 6]a[len(a):] = b

这虽然可行,但可读性不是很高。

insert 方法用于将一个对象插入列表。​​​​​​​

insert(index, obj) 没有返回值index -- 对象obj需要插入的索引位置。obj -- 要插入列表中的对象。
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]num.insert(1, 'Baidu')print(num)输出:[1, 'Baidu', 2, 3, 4, 5, 6, 7, 8, 9, 10]

6、列表元素删除操作

 del 语句来删除列表的的元素​​​​​​​

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]del num[3]print(num)输出:[1, 2, 3, 5, 6, 7, 8, 9, 10]
del numbers[1:4]print(num)输出:[1, 6, 7, 8, 9, 10]

clear方法 就地清空列表的内容。​​​​​​​

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]num.clear()print(num)输出:[]

num.clear() 类似于切片赋值语句num[:] = []。

pop方法从列表中删除一个元素(默认末尾为最后一个元素),可以指定索引位置,并返回这一元素。​​​​​​​

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]num.pop()print(num)输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]num.pop(3)print(num)输出:[1, 2, 3, 5, 6, 7, 8, 9]

pop是唯一既修改列表又返回一个非None值的列表方法。列表为空会报错。

使用pop可实现一种常见的数据结构——栈(stack),后进先出(LIFO)。

Python没有提供push,但可使用append来替代。方法pop和append的效果相反,因此将刚弹出的值压入(或附加)后,得到的栈将与原来相同。

remove方法 用于删除第一个为指定值的元素。如果删除的元素不存在会报错:ValueError。remove是就地修改且不返回值的方法之一。​​​​​​​

num = [1, 2, 3, 4, 5, 3]num.remove(3)print(num)输出:[1, 2, 4, 5, 3]

通过给切片赋值实现删除​​​​​​​

#使用切片赋值还可在不替换原有元素的情况下插入新元素。num = [1, 5]num[1:1] = [2, 3, 4]print(num)输出:[1, 2, 3, 4, 5]
#通过切片删除元素num=[1, 2, 3, 4, 5]num[1:4] = []print(num)输出:[1, 5]

7、其他方法

copy方法 复制列表。常规等号复制只是将另一个名称关联到列表。​​​​​​​

a = [1, 2, 3]b=ab[0] = 3print(a)输出:[3, 4, 3]
a = [1, 2, 3]b=a.copy()b[0] = 3print(a)输出:[1, 2, 3]

count方法计算指定的元素在列表中出现了多少次。​​​​​​​

num=[1, 4, 3, 4, 5]print(num.count(4))   # 2

index方法 在列表中查找指定值第一次出现的索引。​​​​​​​

num=[1, 4, 3, 4, 5]print(num.index(4))  # 1

reverse方法 按相反的顺序排列列表中的元素​​​​​​​

num=[1, 4, 3, 4, 5]num.reverse()print(num)输出:[5, 4, 3, 4, 1]

sort方法 对原列表进行排序​​​​​​​

sort( key=None, reverse=False)key -- 你将其设置为一个用于排序的函数。然而,不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每个元素创建一个 键,再根据这些键对元素进行排序reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
num=[1, 4, 3, 4, 5]num.sort()print(num)输出:[1, 3, 4, 4, 5]

方法sort用于对列表就地排序。就地排序意味着对原来的列表进行修改,使其元素按顺序排列,而不是返回排序后的列表的副本。如果要保留原来的列表,可以使用 b=num.copy(),  b.sort(),原来num的顺序不变。

判断指定元素是否存在

元素 in 列表名,元素 not in 列表名。​​​​​​​

num=[1, 4, 3, 4, 5]print(3 in num)   #Trueprint(3 not in num)  #False

8、列表生成式

num = [i for i in range(6)]print(num)输出:[0, 1, 2, 3, 4, 5


关注公众号同步更新:

 三四五才醒的程序员  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值