002 List常用操作

list的认识

names = ['James', 'Michael', 'Emma', 'Emily']

print("names的数据类型:", type(names))
print(names)


#结果
names的数据类型: <class 'list'>
['James', 'Michael', 'Emma', 'Emily']
# 用 len() 可获得 list 的长度,即 list 集合所包含的元素个数
n = len(names)
print(n)


#结果
4
# 如果 list 中一个元素也没有,我们可以定义一个空的 list ,则其长度为 0
empty_list = []
print(empty_list)
print(len(empty_list))


#结果
[]
0

访问列表中的值

# 用索引来访问 list 中的每个元素,请注意索引是从 0 开始,最后一个的索引编号为 n-1,即所有元素的编号依次为 (0,1, 2, ..., n-1)。
print(names[0])
print(names[1])


#结果
'James'
'Michael'
# 如果要获取最后一个元素,也可以用 -1 来做索引,倒数第二个元素可以用 -2 来索引,其他以此类推
print(names[-1])
print(names[-2])


#结果
'Emily'
'Emma'

可以通过 for 循环来列出所有元素。有两种方法可以实现

#方法1
for name in names:
    print(name)


#结果
James
Michael
Emma
Emily
#方法2
for i in range(len(names)):
    print(names[i])


#结果
James
Michael
Emma
Emily

列表的操作、函数及方法

list中的增、改、删等操作

list 是一个可变的有序列表,可以通过添加、修改、删除等操作来操作list中的元素

往list中添加元素

可以通过 append() 和 insert() 方法来往 list 中添加元素
其中,append() 方法是在 list 的末尾添加元素;insert() 是在指定位置添加元素

names.append('Jacob')
print(names)


#结果
['James', 'Michael', 'Emma', 'Emily', 'Jacob']
names.insert(1,'Tom')
print(names)


#结果
['James', 'Tom', 'Michael', 'Emma', 'Emily', 'Jacob']

删除list中的元素

用pop()方法删除list末尾的元素

print(names.pop())


#结果
'Jacob'
print(names)


#结果
['James', 'Tom', 'Michael', 'Emma', 'Emily']

删除指定位置的元素,用pop(i)方法

print(names.pop(0))


#结果
'James'
print(names)


#结果
['Tom', 'Michael', 'Emma', 'Emily']

修改list中的元素

如果需要修改 list 中的元素,可以直接通过 list 的索引进行赋值来实现

names[2] = "Lemon"
print(names)


#结果
['Tom', 'Michael', 'Lemon', 'Emily']

列表操作符

列表可以进行相加 “+” 和相乘 “” 运算,“+” 相当于拼接列表,“” 相当于重复列表
此外,还可以判断元素是否存在于列表中

#列表相加
print("列表相加:",[1,2,3]+['a','b'])


#结果
列表相加: [1, 2, 3, 'a', 'b']
#列表相乘
print("列表相乘:",['a','b']*3)


#结果
列表相乘: ['a', 'b', 'a', 'b', 'a', 'b']
#判断元素是否存在于列表中
print("判断元素是否存在于列表中:",'a' in ['a','b'])
print("判断元素是否存在于列表中:",'a' not in ['a','b'])


#结果
判断元素是否存在于列表中: True
判断元素是否存在于列表中: False

列表函数与方法

列表的函数包含:
• len(list),列表元素个数,即列表的长度
• max(list),返回列表元素最大值
• min(list),返回列表元素最小值
• list(sep),将元组转为列表

列表的方法
列表的方法除了前面提到的增、改、删等方法外,还有其他一些方法,如下:
• list.count(obj),统计某个元素在列表中出现的次数
• list.extend(seq),在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表
• list.index(obj),从列表中找出某个值第一个匹配项的索引位置
• list.remove(obj),移除列表中某个值的第一个匹配项
• list.sort(),对原列表进行排序
• list.reverse(),对原列表进行反向排序

list1 = [1,2,3,9,6,3]
list2 = [3,8,5,4,7,4]
tuple1 = (3,9,6)
#列表函数测试
print("列表最大值:",max(list1))
print("列表最小值:",min(list1))
print("将元组转换为列表:",list(tuple1))


列表最大值: 9
列表最小值: 1
将元组转换为列表: [3, 9, 6]
#列表的方法测试
print("count:",list1.count(3))
list1.extend(list2)
print("extend:",list1)
print("index:",list2.index(4))
print("before remove:",list2)
list2.remove(4)
print("after remove:",list2)
list2.sort()
print("sort:",list2)
list2.reverse()
print("reverse: ",list2)


count: 2
extend: [1, 2, 3, 9, 6, 3, 3, 8, 5, 4, 7, 4]
index: 3
before remove: [3, 8, 5, 4, 7, 4]
after remove: [3, 8, 5, 7, 4]
sort: [3, 4, 5, 7, 8]
reverse:  [8, 7, 5, 4, 3]

list中元素的类型多样性

同一个 list 中的元素的类型可以是字符串(str)、整型(int)、布尔型(Boolean)、以及嵌套的 list 等

a_list = ["Lemon",100,['a','b','c','d'],True]
print(a_list)


#结果
['Lemon', 100, ['a', 'b', 'c', 'd'], True]
print(a_list[0])


#结果
'Lemon'
print(a_list[2])


#结果
['a', 'b', 'c', 'd']
b_list = ['a','b','c','d']
c_list = ['Lemon',100,b_list,True]
print(c_list)


#结果
['Lemon', 100, ['a', 'b', 'c', 'd'], True]

list的切片

可以通过切片 (slices) 的形式来获取部分连续的元素。

c_list = ['James','Ava','Michael','Emma','Emily','Jacob']

list 中以切片形式使用时,其结构可参考 new_list[start: end : step]
其中 “start” 和 “end” 表示索引位置的开始和结束,选取的元素包含 “start”,但不包含 “end”
“step” 表示步长,默认情况下,“step” 为 1,演示如下:

#1:3 表示切片选取的是第 2 个元素和第 3 个元素,即包含索引为 1 和索引为 2 的元素。相当于获 取 c_list[1] 和 c_list[2]
print(c_list[1:3])


#结果
['Ava', 'Michael']
#“start” 和 “end” 为空的时候,默认是全选,即 “start” 为 0,“end” 为 len(c_list)-1。 所以 c_list[::2] 表示的是从索引为 0 开始,以步长为 2 来选择元素
print(c_list[::2])
print(c_list[1:3:2])


#结果
['James', 'Michael', 'Emily']
['Ava']

new_list[-1] 表示获取最后一个元素,在切片的步长 “step” 中,也可以是负数,比如 “-1”,当 “step” 为 -1 时,是将列表进行了逆序排序

print(c_list[::-1])
print(c_list[::-2])


#结果
['Jacob', 'Emily', 'Emma', 'Michael', 'Ava', 'James']
['Jacob', 'Emma', 'Ava']

可以这么理解,当步长为正数时,是从左到右以该步长来获取列表中的元素; 而当步长为负数时,是从右到左以该步长的绝对值来获取列表中的元素

列表推导式

列表推导式的一般语法结构:
new_list = [x for x in iterable]
其中的 iterable 表示可迭代的对象,包括字符串(str)、列表(list),元组(tuple)、字典(dict)、集合(set), 以及生成器(generator)等

str_list = [x.lower() for x in "Lemon"]
print(str_list)


#结果
['l', 'e', 'm', 'o', 'n']
list_list = [x**2 for x in [1,2,3,4]]
print(list_list)


#结果
[1, 4, 9, 16]
tuple_list = [x+2 for x in (1,2,3,4)]
print(tuple_list)


#结果
[3, 4, 5, 6]
ge_list = [x for x in range(8)]
print(ge_list)


#结果
[0, 1, 2, 3, 4, 5, 6, 7]

两层for循环的列表推导式

[x ** 2 + y for x in range(5) for y in range(4,7)]


#结果
[4, 5, 6, 5, 6, 7, 8, 9, 10, 13, 14, 15, 20, 21, 22]
#上述与此类似
two_for_list = []

for x in range(5):
    for y in range(4,7):
        two_for_list.append(x**2+y)
print(two_for_list)


#结果
[4, 5, 6, 5, 6, 7, 8, 9, 10, 13, 14, 15, 20, 21, 22]

使用两个变量来生成list

d = {'x':'1','y':'2','z':'4'}
d_list = [k+'='+v for k,v in d.items()]
print(d_list)



#结果
['x=1', 'y=2', 'z=4']

含if语句的列表推导式

if_list = [x**2 for x in range(10) if x%2==0]
print(if_list)


#结果
[0, 4, 16, 36, 64]
  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值