百木园-与人分享,
就是让自己快乐。

Python 列表

1 什么是列表

列表是一组有序的元素组成,元素本身没有限制,元素与元素之间也没有任何关系,在Python中用方括号[]表示列表

列表的特性:可变、有序

2 列表相关操作

2.1 访问单个列表元素

列表是有序的,因此可以通过列表的索引访问列表的元素,特别注意索引是从0开始的,示例如下:

names = [\'张无忌\', \'赵敏\', \'周芷若\']
print(names[0])

结果如下:

2.2 访问多个列表元素——列表切片

列表切片返回包含源列表部分元素的新列表,通过索引和步长实现

切片语法是:list[start_index:end_index:step]

正值索引值是0到len(list[])-1,负值索引值是-len(list[])到-1

step缺省时第二个冒号也可以省略,但start_index和end_index缺省时,两个冒号均不能省略

返回的列表元素包含start_index,不含end_index

参数默认值:start_index默认值是0,end_index默认值是len(list[]),step默认值是1

示例如下:

names = [\'张无忌\', \'赵敏\', \'周芷若\']
print(names[0:2]) # 正索引
print(names[-3:-1]) # 负索引
print(names[:2]) # start_index缺省
print(names[0:]) # end_index缺省

结果如下:

特殊用法:负数step实现列表翻转

names = [\'张无忌\', \'赵敏\', \'周芷若\']
print(names[::-1]) # start_index和end_index缺省
print(names[2:0:-1]) # 无法返回元素names[0]
print(names[2::-1]) # 正值索引通过缺省end_index返回元素names[0]
print(names[-1::-1])
print(names[-1:-3:-1])

结果如下:

因为step为负值,,即返回元素的方向是反向索引(从右往左),所以对应的start_index需要在end_index右侧

反向索引切片返回的列表不含索引为end_index的元素,使用正值索引需要返回缺省end_index参数

2.3 列表元素的变更

2.3.1 修改列表元素

列表元素的修改通过索引实现,可以一次修改过个元素,修改多个元素的语法类似切片

# 修改单个元素,元素不加方括号[]
list1 = [\'张无忌\', \'赵敏\', \'周芷若\']
list1[2] = \'小昭\'
print(list1)

# 修改不相邻的多个元素时,修改前后的序列个数必须一致
list2 = [\'a\', \'b\', \'c\']
# 也可以使用list2[0:3:2] = [\'d\', \'e\'],Python会自动对可迭代的对象做一次解析,然后赋值到对应位置
list2[0:3:2] = \'de\'
print(list2)

# 修改相邻的多个元素时,修改前后的序列个数可以不同,使用该方法可以变更元素数量
list3 = [\'a\', \'b\', \'c\']
# 也可以是list3[3:] = \'de\'
list3[3:] = [\'d\', \'e\']
print(list3)

结果如下:

2.3.2 向列表插入元素

向列表任意位置插入元素,使用list[].insert()方法

语法为:

list.insert(index, object)

将object插入到索引index位置,对应位置及之后原来的元素顺位后移,示例如下:

names = [\'张无忌\', \'赵敏\']
names.insert(1, \'小昭\')
print(names)

结果如下:

向列表末尾添加元素,使用list[].append()方法

语法为:

list.append(object)

object元素被添加至原列表末尾,示例如下:

names = [\'张无忌\', \'赵敏\']
names.append(\'小昭\')
print(names)

结果如下:

2.3.3 删除列表元素

使用del语句删除元素

语法为:

del list[start_index, end_index, step]

删除的元素就是切片返回的元素,示例如下:

names = [\'张无忌\', \'赵敏\', \'周芷若\']
del names[0:3:2]
print(names)

结果如下:

使用list.pop()方法删除元素

pop()方法删除元素后会弹回元素,在不重复抽奖等程序中常使用

语法为:

list.pop(index)

将索引为index的元素list[index]从原列表删除并返回,index缺省时,默认删除末尾元素,示例如下:

names = [\'张无忌\', \'赵敏\', \'周芷若\']
name = names.pop()
print(names)
print(name)

结果如下:

使用remove()方法删除元素

remove()方法可以根据值删除元素

语法为:

list.remove(value)

该方法只会删除列表中首个值为value的元素,如果值不在列表中,则会报错,示例如下:

names = [\'张无忌\', \'赵敏\', \'周芷若\', \'张无忌\']
names.remove(\'张无忌\')
print(names)

结果如下,第二个张无忌并没有被删除:

2.3.4 列表相加和列表的乘法

列表和列表可以直接相加,语法为:list1+list2

列表的乘法是对列表元素的复制,常用来生成元素重复的列表,语法为:list*number

示例如下:

names1 = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names2 = [\'周芷若\', \'小昭\']
names3 = names1 + names2
names4 = names1 * 3
print(names3)
print(names4)

结果如下:

2.4 变更列表元素顺序

2.4.1 list.sort()方法——对列表永久排序

语法为:

list.sort(key=None, reverse=False)

  • key:一个函数,只有一个参数,函数的输入就是列表元素,根据输出结果对原列表进行排序
  • reverse:排序规则,reverse = True 降序, reverse = False 升序(默认)

sort()方法对原列表进行修改,属于不可逆的永久排序,示例如下:

names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names.sort(key=len, reverse=True) # 以元素的长度为key进行排序
print(names)

结果如下:

2.4.2 sorted()函数——对列表临时排序

语法为:

sorted(key=None, reverse=False)

  • key:一个函数,只有一个参数,函数的输入就是列表元素,根据输出结果对原列表进行排序
  • reverse:排序规则,reverse = True 降序, reverse = False 升序(默认)

sorted()函数排序后返回新的列表,不对原列表做更改,示例如下:

names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
now_names = sorted(names, key=len, reverse=True) # 以元素的长度为key降序排序
print(now_names)
print(names)

结果如下:

2.4.3 reserve()方法——翻转列表

reserve()方法是对原列表操作,属于永久操作,需要恢复到以前的顺序,再次使用reserve()方法即可,示例如下:

names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names.reverse()
print(names)

结果如下:

来源:https://www.cnblogs.com/programmer4027/p/14713896.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Python 列表

相关推荐

  • 暂无文章