我们可以使用 * 来合并列表。
更具体地说,当置于列表之前时,* 会使列表自身 扩展 到其容器内(例如另一个列表内)
我们可以将这与单个元素结合使用,并选择哪些列表要展开。
2) 我们可以使用 来解包列表, 作为解包操作符让我们假设我们有一个包含一些关于狗的信息的列表——第一个元素是它的名字,第二个元素是它的年龄,其余的元素是它喜好的食物。
我们可以使用 * 来将列表的一部分 解包 到一个变量中。例如,我们希望单独获取名字和年龄这两个元素,但将最喜欢的食品作为一个列表来处理。
在这里,rocky 和 5 分别被赋值给 name 和 age。
然而,fav_food 被分配给 一切未分配的项,并捕获所有未分配的元素,将其作为一个列表。
3) 使用 * 来解包列表作为函数参数假设我们有一个简单的函数,它接受 (a, b, c) 并打印它们
如果我们有一个包含3个元素的列表,可以使用运算符将它解包后传递给该函数。运算符将列表的元素解包到其容器中。
在这里,假设 numbers = [1, 2, 3],test(*numbers)
相当于 test(1, 2, 3)
需要注意的是,在这种情况下,test(a, b, c)
接受 3 个参数,因此我们的输入参数列表必须包含三个参数。
内置的 zip()
函数 ,允许我们同时迭代 1 个或多个列表:
我们可以同时遍历3个甚至更多的列表:
5) enumerate() 函数用于迭代时同时生成索引和值如果我们希望在迭代时同时生成索引和值,我们可以考虑使用内置的 enumerate()
函数。
我最近写了一本书《101 Things I Never Knew About Python》,这本书详细介绍了这些我本可以更早学到的 Python 相关知识。
点击这里查看: https://payhip.com/b/vywcf
比较.sort()和sorted()之间的区别.sort()和sorted()都是Python中的方法,用于对列表进行排序。.sort()是列表的一个方法,它会直接修改原列表,而sorted()是一个函数,它返回一个新的已排序列表,不会改变原列表。
.sort() 和 sorted() 都可以对列表进行排序,但它们之间有一个关键的区别。
.sort() 不返回任何值,而是直接在原地进行排序——这意味着原始列表本身会被直接排序。
sorted() 创建并返回我们列表的 一个已排序副本 — 意味着原始列表不会被改变。这在我们希望出于某些原因保留原始顺序时会很有用。
7. 使用带有自定义条件的 .sort() 排序这既适用于 .sort()
方法,也适用于 sorted()
函数,但让我们仅以 .sort()
为例说明。默认情况下,.sort()
按升序对数字进行排序。
如果我们希望根据自定义条件进行排序,我们可以将自定义函数传递给 key 关键字参数。假设我们想根据 最后一个数字位 进行排序,从而得到 [22, 38, 19]
我们可以采用等效的lambda函数来简化这段内容,如果愿意的话。
8) 列表生成式假设我们有一份水果清单,我们想要将它们转换为大写。这是我们可以采取的一种基本方法:
不过,我们可以使用列表推导式以更优雅的一行代码完成此操作。在这里,.upper()
转换是在列表推导式内部的 应用的。
我们可以添加一个条件来筛选我们想要保留的水果。例如,只保留长度为5或更长的水果。
9) 元组与列表的比较元组本质上是不可变的序列。这意味着我们不能在创建元组后对其进行修改(添加或删除元素)。
我们使用圆括号而不是方括号来定义一个元组为:
使用元组而非列表的缺点:
- 由于元组是不可变的,我们不能向元组中添加新元素
- 由于元组是不可变的,我们也不能从元组中移除元素
使用元组而非列表的好处:
- 元组是不可变的,这意味着它们可以被哈希
- 元组是可哈希的,这意味着它们可以作为字典的键(列表不可以)
- 元组是可哈希的,这意味着它们可以被加入到集合中(列表不可以)
我们可能已经熟悉列表的 _.append()
方法,该方法在列表的末端添加一个新的元素。
但是你知道吗,我们也有 _.insert()
方法,可以将新元素放在我们希望的任何索引处?
在索引 0 插入 'AAA' —— 'AAA' 将位于我们的列表中的索引 0,其他所有元素将向后移动一位。
在索引 1 插入 'AAA' 后,'AAA' 将位于我们的列表中的索引 1,其余所有元素将向后移一位。
注意——所有位于我们插入的索引之后的元素将会被向后推移一个索引位置,这意味着此操作的时间复杂度为O(n),即线性时间复杂度。也就是说,如果列表中的元素数量很多,此操作可能会比较耗时。
11).extend(other_list)
# 扩展列表的方法
我们可以使用Lodash框架中的 _.extend() 方法将一个列表的所有元素添加到另一个列表的末尾。
在这里的 _a.extend(b)
方法中,我们将 b 中的所有内容添加进 a。而 b 保持不变:
从技术角度来看,我们可以做 a = a + b,但这种方法会创建一个新的列表,然后将其赋值给 a。这使得这种方法在内存使用上不够高效。
12) list[start:end] = [1, 2, 3] # 将列表的指定部分替换为新的值你可能知道的是,我们可以使用~list[index] = new_element~来替换列表中的特定元素。
但你知道我们可以通过这种方式替换一系列元素吗?
*这里,ls[0:3]
表示列表 ['apple', 'boy', 'cat']
ls[0:3] = [1, 2, 3]
表示 Python 会将ls[0:3]
的值从['apple', 'boy', 'cat']
替换为[1, 2, 3]
请注意 — 范围的长度不必相等。我们可以用一个元素替换长度为3的范围中的内容,如下所示:
Python列表的17个重要知识点请在_SUBSTACK页面阅读完整帖子,如果愿意支持我,请多多支持。
Python 列表的 17 个遗憾未及早了解的事项1) 我们可以使用 * 来操作列表,例如合并 如果你想支持我作为创作者,- 加入我的 Substack 通讯:https://zlliu.substack.com/ — 我每周发送与 Python 相关的电子邮件
- 购买我的书:Python 的 101 个我不知道的事情:https://payhip.com/b/vywcf
- 为这个故事点赞 50 次
- 留言告诉我你的想法
-
标出你最喜欢的部分
谢谢!这些小小的行动意义深远,我非常感激!
YouTube: YouTube (yóu yù tè bō)
共同学习,写下你的评论
评论加载中...
作者其他优质文章