python进阶系列- 01列表

列表是一种有序且可变的数据类型。与集合不同,列表允许重复元素。它们对于保存数据序列并进一步迭代它很有用。
列表通常用方括号[]创建。最常见的方式:

my_list = ["banana", "cherry", "apple"]

Python内置数据类型比较

  • 列表是一个有序且可变的集合,允许重复成员。
  • 元组是一个有序且不可变的集合,允许重复成员。
  • 集合是一个无序和无索引的集合,没有重复的成员。
  • 字典是一个无序、可变和索引的集合,没有重复的成员。
  • 字符串是 Unicode 编码的不可变序列。

创建列表

列表是用方括号或内置列表函数创建的。

示列:

list_1 = ["banana", "cherry", "apple"]
print(list_1)
# 内置方法list    
list_2 = list()
print(list_2)
# 允许包含任何类型的值
list_3 = [5, True, "apple", [1, 2, 3]]
print(list_3)
# 允许重复
list_4 = [0, 0, 1, 1]
print(list_4)

结果:

['banana', 'cherry', 'apple']
[]
[5, True, 'apple', [1, 2, 3]]
[0, 0, 1, 1]

访问元素

您可以通过引用索引号访问列表项。
请注意,索引从 0 开始。

示列:

list_1 = ["banana", "cherry", "apple"]
item = list_1[0]
print(item)
# 你可以通过负数索引,例如-1指向最后一个项目,-2指向倒数第二个项目,以此类推。
item = list_1[-1]
print(item)

结果:

banana
apple

改变元素

只需要引用索引号,并且赋值新值。

list_1 = ["banana", "cherry", "apple"]
list_1[2] = "lemon"
print(list_1)

结果:

['banana', 'cherry', 'lemon']

常用方法

查看Python 文档以查看所有列表方法

示列:

my_list = ["banana", "cherry", "apple"]

# len(): 返回列表元素的数量。
print("Length:", len(my_list))
# append(): 在列表末尾添加新的对象。
my_list.append("orange")
# insert(): 在列表中指定位置插入一个对象。
my_list.insert(1, "blueberry")
print(my_list)
# pop(): 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
item = my_list.pop()
print("Popped item: ", item)
# remove(): 移除列表中指定值的第一个匹配项。
my_list.remove("cherry") # 如果列表中不存在指定值,将引发一个错误。
print(my_list)
# clear() : 清空列表
my_list.clear()
print(my_list)
# reverse() : 反向列表中元素
my_list = ["banana", "cherry", "apple"]
my_list.reverse()
print('Reversed: ', my_list)
# sort() : 对原列表进行排序
my_list.sort()
print('Sorted: ', my_list)
# 用 sorted() 获得一个新列表,并且不影响原列表。
# sorted() 不仅可以用于列表,还可以用于其他可迭代的类型。
my_list = ["banana", "cherry", "apple"]
new_list = sorted(my_list)
# 创建一个列表,其中包含重复的元素
list_with_zeros = [0] * 5
print(list_with_zeros)
# 列表可以使用 + 运算符进行连接。
list_concat = list_with_zeros + my_list
print(list_concat)
# 字符串转换为列表。
string_to_list = list('Hello')
print(string_to_list)

结果:

Length: 3
['banana', 'blueberry', 'cherry', 'apple', 'orange']
Popped item:  orange
['banana', 'blueberry', 'apple']
[]
Reversed:  ['apple', 'cherry', 'banana']
Sorted:  ['apple', 'banana', 'cherry']
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 'banana', 'cherry', 'apple']
['H', 'e', 'l', 'l', 'o']

复制列表

普通的引用性复制,要小心!

示列:

list_org = ["banana", "cherry", "apple"]
# 这只是复制了列表的引用,所以要小心!
list_copy = list_org
# 现在修改的副本也会影响原始列表
list_copy.append(True)
print(list_copy)
print(list_org)
# 使用 copy() 或者 list(x) :复制列表到新变量。
# 分片也可以用于复制列表:list_copy = list_org[:]
list_org = ["banana", "cherry", "apple"]
list_copy = list_org.copy()
# list_copy = list(list_org)
# list_copy = list_org[:]
# 现在修改的副本不会影响原始列表
list_copy.append(True)
print(list_copy)
print(list_org)

结果:

['banana', 'cherry', 'apple', True]
['banana', 'cherry', 'apple', True]
['banana', 'cherry', 'apple', True]
['banana', 'cherry', 'apple']

迭代

迭代是 Python 列表、字典、集合等数据结构的一个重要特性。

示列:

# 列表迭代
list_1 = ["banana", "cherry", "apple"]
for i in list_1:
    print(i)

结果:

banana
cherry
lemon

判断元素是否在列表中

示列:

list_1 = ["banana", "cherry", "apple"]
if "banana" in list_1:
    print("yes")
else:
    print("no")

结果:

yes

分片

获取列表的子集,可以使用分片(😃,类似于字符串的分片。

# 用法:a[start:stop:step], 其中 start 和 stop 是整数,step 是步长,默认为 1。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = a[1:3] # 这里是从 1 开始,到 3 结束,不包括 3
print(b)
b = a[2:] # 这里是从 2 开始,到最后
print(b)
b = a[:3] # 这里是从 0 开始,到 3 结束,不包括 3
print(b)
a[0:3] = [0] # 重新赋值
print(a)
b = a[::2] # 这里是从 0 开始,到最后,步长为 2
print(b)
a = a[::-1] # 倒序
print(a)
b = a[:] # 复制列表
print(b)

结果:

[2, 3]
[3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3]
[0, 4, 5, 6, 7, 8, 9, 10]
[0, 5, 7, 9]
[10, 9, 8, 7, 6, 5, 4, 0]
[10, 9, 8, 7, 6, 5, 4, 0]

列表推导式

一种从现有列表创建新列表的优雅而快速的方法。

语法:[expression for item in iterable if condition]

示列:

a = [1, 2, 3, 4, 5, 6, 7, 8]
b = [i * i for i in a] # 平方
print(b)

结果:

[1, 4, 9, 16, 25, 36, 49, 64]

嵌套列表

列表可以包含其他列表(或其他容器类型)。

示列:

a = [[1, 2], [3, 4]]
print(a)
print(a[0])

结果:

[[1, 2], [3, 4]]
[1, 2]

总结

列表虽然看似简单,但坑也较多,上面分享python列表小知识,希望对你有所帮助。

欢迎大家点赞、收藏,支持!

pythontip 出品,Happy Coding!

公众号: 夸克编程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值