Python3 列表、元组、字典和集合的比较(及各种生成式)

专栏地址:最强 Python3 基础

公众号:Python 生产力



前言

在这之前,已经介绍过列表、元组、字典和集合这四种数据类型,每一种数据类型都有它独特的地方,如集合是无序的,不能知道具体元素的具体位置。这些特点的灵活使用能帮助在平常编写代码的过程中解决一些不方便操作的数据。

同时,这些所有数据类型都可以使用 for 关键词进行迭代来获取里面的元素或者元素相对应位置的下标,或者使用特定的生成式来简化迭代所需写的代码。更或者,用更加强大的生成器一步一步推算出我们所需要的数据,而不是一次性生成所有数据。

下面这个表格展示了四种数据类型相同点以及不同点在哪。

名称 形式 特点 可变性
列表(list) ['Python', 'Java'] 1、有序并且可以重复。2、可以使用下标来对列表进行添加或删除等操作 可变
元组(tuple) (123, 456, 789) 1、有序并且可以重复2、不能做添加、更新操作 不可变
字典(dict) {'name': 'C++', 'price': 111} 1、无序并且键唯一2、以键值对的形式存储 可变
集合(set) {'C', 'Ruby', 'Javascript'} 1、无序并且不重复2、不能对某个具体的值做更新或者删除操作3、空集合只能使用 set() 方法来创建 可变

一、列表

1. 列表其他用法

列表相比较其他三种数据类型,是最灵活的一种。因为列表对添加到其中的元素并没有特别的要求,所以我们在任何时候都可以添加一些我们想要的元素进去,尤其是将一个列表添加到另一个列表当中,这时候就产生了列表的嵌套,我们常把这种用作矩阵的表达

当我们想表达一个 2x3 的矩阵的时候,只需要在一个列表中添加另外两个列表元素即可。在内存限制下,我们可以添加任意多个嵌套列表,在多重嵌套列表的情况下,对列表元素的查询一样简单。只需要使用多个下标即可取出相对应的元素。

a = [
    [1, 5, 9],
    [1, 2, 8]
]

print(a[0])
print(a[0][1])
print(a[1][0:2])

# 输出 >>>
[1, 5, 9]
5
[1, 2]

2. 列表迭代

很多情况下我们需要对列表进行循环获取元素,这时候就需要用 for 这个关键词来循环。列表的循环有四种形式,每种形式获取值的方式不一样,看下面的四个例子。下面四个例子各展示了直接获取值、先获取索引再根据索引获取值、同时获取索引和值(enumerate())以及使用 iter() 迭代器这四种方法。四种方法各有优缺点,在实际使用场景中需要具体区分。

# 直接获取值
list1 = ['Python', 'Java', 'C++']

for v in list1:
    print(v)
    
# 输出 >>>
Python
Java
C++

# ======================================================================================

# 先获取索引再根据索引获取值
list2 = ['Python', 'Java', 'C++']

for i in range(len(list2)):
    print(list2[i])
    
# 输出 >>>
Python
Java
C++

# ======================================================================================

# 用 enumerate() 函数来同时获取索引和值
list3 = ['Python', 'Java', 'C++']

for i, v in enumerate(list3):
    print('索引: ', i<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞎叨叨的一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值