Python 中如何向列表或数组添加元素

简介: Python 中如何向列表或数组添加元素

1.Python 中的列表是什么?给初学者的定义

编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。

然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。

列表本质上是动态数组,是 Python 中最常见的和最强大的数据结构之一。

你可以把它们想象成有序的容器。它们将同类相关的数据存储和组织在一起。

存储在一个列表中的元素可以是任何数据类型。

可以有整数列表、浮点数列表、字符串列表,以及任何其它内置 Python 数据类型的列表。

尽管列表有可能只容纳相同数据类型的项目,但它们比传统的数组更灵活。这意味着在同一个列表中可以有各种不同的数据类型。

列表有 0 个或更多的项目,这意味着也可以有空的列表。在一个列表中,也可以有重复的值。

值之间用逗号隔开,用方括号 [] 把值括起来。

如何在 Python 中创建列表

要创建一个新的列表,首先给这个列表起一个名字。然后添加赋值运算符(=)和一对有开头和结尾的方括号。在方括号内添加你希望列表包含的值。

#创建一个包含名字的新列表
names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

#将列表打印到控制台
print(names)

#输出
#['Jimmy', 'Timmy', 'Kenny', 'Lenny']

在 Python 中列表是如何被索引的

列表为每个项目保持一个顺序。

集合中的每个项目都有一个自己的索引号,你可以用它来访问这个项目本身。

Python(以及其它现代编程语言)中的索引从 0 开始,列表中的每一项的索引逐个增加。

例如,前面创建的列表有 4 个值:

names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

列表中的第一个值,“Jimmy”,索引为 0。

列表中的第二个值,“Timmy”,索引为 1。

列表中的第三个值,“Kenny”,索引为 2。

列表中的第四个值,“Lenny”,索引为 3。

要通过索引号访问列表中的一个元素,首先要写出列表的名称,然后在方括号中写出该元素索引,这是一个整数。

例如,如果你想访问索引为 2 的元素,你应该这样做:

names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

print(names[2])

#output
#Kenny

2.Python 中的列表是可变的

在 Python 中,当对象是可变的时候,这意味着一旦它们被创建,其值就可以被改变。

列表是可变的对象,所以在它们被创建后,你可以更新和改变它们。

列表也是动态的,意味着它们可以在程序的整个生命周期中增长和缩小。

可以从现有的列表中删除项目,也可以给现有的列表添加新的项目。

有一些内置的方法用于从列表中添加和删除项目。

例如,要添加项目,有 .append()、.insert() 和 .extend() 方法。

要删除项目,有 .remove()、.pop() 和 .pop(index) 方法。

.append() 方法的作用

.append() 方法在一个已经存在的列表的末尾添加一个额外的元素。

语法看起来像这样:

list_name.append(item)

让我们把它分解一下:

  • list_name 是你给列表起的名字。
  • .append() 是列表方法,用于在 list_name 的末尾添加一个项目。
  • item 是你要添加的指定的单独项目。

使用 .append() 时,原始列表被修改,不创建新的列表。

如果你想在先前创建的列表中添加一个额外的名字,你可以这样做:

names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

#在列表的末尾添加名字 Dylan
names.append("Dylan")

print(names)

#output
#['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']

.append() 和 .insert() 方法之间有什么区别

这两个方法的区别是:.append() 在列表的末尾添加一个项目,而 .insert() 在列表的指定位置插入一个项目。

正如你在上一节看到的,.append() 将把你作为参数传递给函数的项目始终添加到列表的末尾。

如果你不想只是将项目添加到列表的末尾,你可以用 .insert() 指定你想添加的位置。

一般的语法是这样的:

list_name.insert(position,item)

让我们把它分解一下:

  • list_name 是列表的名称。
  • .insert() 是列表方法,用于在列表中插入一个项目。
  • position 是该方法的第一个参数。它总是一个整数——具体地说,它是你希望新项目被放置的位置的索引号。
  • item 是该方法的第二个参数。在这里你指定你想添加到列表中的新项目。

例如,假设你有以下的编程语言列表:

programming_languages = ["JavaScript", "Java", "C++"]

print(programming_languages)

#output
#['JavaScript', 'Java', 'C++']

如果你想在列表的开始插入 “Python”,作为列表的一个新项,你可以使用 .insert() 方法,并指定位置为 0(记住,列表的第一个值的索引总是 0)。

programming_languages = ["JavaScript", "Java", "C++"]

programming_languages.insert(0, "Python")

print(programming_languages)

#output
#['Python', 'JavaScript', 'Java', 'C++']

如果你想让 “JavaScript” 成为列表中的第一个项目,然后添加 “Python” 作为新的项目,你会指定位置为 1:

programming_languages = ["JavaScript", "Java", "C++"]

programming_languages.insert(1,"Python")

print(programming_languages)

#output
#['JavaScript', 'Python', 'Java', 'C++']

与 .append() 方法相比,.insert() 方法给了你更多的灵活性,前者只在列表的末尾添加一个新项目。

.append() 和 .extend() 方法之间有什么区别

如果你想一次向列表中添加多个项目,而不是一次添加一个,怎么办?

你可以使用 .append() 方法在一个列表的末尾添加多个项目。

假设你有一个只包含两种编程语言的列表:

programming_languages = ["JavaScript", "Java"]

print(programming_languages)

#output
#['JavaScript', 'Java']

然后你想在它的最后再增加两种语言。

在这种情况下,你传递一个包含你想添加的两个新值的列表,作为 .append() 的一个参数:

programming_languages = ["JavaScript", "Java"]

#在列表的末尾添加两个新项目
programming_languages.append(["Python","C++"])

print(programming_languages)

#output
#['JavaScript', 'Java', ['Python', 'C++']]

如果你仔细看看上面的输出,['JavaScript', 'Java', ['Python', 'C++']],你会发现一个新的列表被添加到已经存在的列表的末尾。

所以,.append() 在一个列表中添加了一个列表。

列表是对象,当你使用 .append() 将另一个列表添加到一个列表中时,新的项目将作为一个单独的对象(项目)被添加。

假设你已经有两个列表,像这样:

names = ["Jimmy", "Timmy"]
more_names = ["Kenny", "Lenny"]

如果想把两个列表的内容合二为一,把 more_names 的内容加入到 names 中,会怎么样?

当 .append() 方法被用于此目的时,另一个列表会在 names 中被创建:

names = ["Jimmy", "Timmy"]
more_names = ["Kenny", "Lenny"]

#将 more_names 的内容添加到 names
names.append(more_names)

print(names)

#output
#['Jimmy', 'Timmy', ['Kenny', 'Lenny']]

所以,.append() 通过将对象追加到最后,将新的元素作为另一个列表添加。

要真正将列表连接(添加)在一起,并将一个列表中的所有项目合并到另一个列表,你需要使用 .extend() 方法。

一般的语法是这样的:

list_name.extend(iterable/other_list_name)

让我们把它分解一下:

  • list_name 是其中一个列表的名称。
  • .extend() 是将一个列表的所有内容添加到另一个列表的方法。
  • iterable 可以是任何可迭代的东西,比如另一个列表,例如 another_list_name。在这种情况下,another_list_name 是一个列表,它将与 list_name 连接,其内容将作为单独的项目被逐一添加到 list_name 的末尾。

因此,拿前面的例子来说,当 .append() 被替换为 .extend() 时,输出结果将是这样的:

names = ["Jimmy", "Timmy"]
more_names = ["Kenny", "Lenny"]

names.extend(more_names)

print(names)

#output
#['Jimmy', 'Timmy', 'Kenny', 'Lenny']

当我们使用 .extend() 时,名字列表得到扩展,其长度增加了 2。

.extend() 的工作方式是,它将一个列表(或其他可迭代的)作为参数,对每个元素进行迭代,然后将可迭代的每个元素添加到列表中。

.append() 和 .extend() 之间还有一个区别。

当你想添加一个字符串时,如前面所见,.append() 将整个单一项目添加到列表的末尾:

names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

#将名字 Dylan 添加到列表的末尾
names.append("Dylan")
#Python小白学习交流群:711312441
print(names)

#output
#['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']

如果你用 .extend() 将一个字符串添加到一个列表的末尾,那么字符串中的每个字符都会作为一个单独的项目被添加到列表中。

这是因为字符串是可迭代的,而 .extend() 是对传递给它的可迭代参数进行迭代。

因此,上面的例子看起来将是像这样的:

names = ["Jimmy", "Timmy", "Kenny", "Lenny"]

#给 .extend() 传递一个字符串(可迭代的)
names.extend("Dylan")

print(names)

#output
#['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'D', 'y', 'l', 'a', 'n']

总结

总而言之,.append() 方法用于在现有列表的末尾添加一个项目,而不创建一个新的列表。

当它用于将一个列表添加到另一个列表时,它在一个列表中创建一个列表。

相关文章
|
9天前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
168 1
|
9天前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
56 1
|
9天前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
87 0
|
12天前
|
开发者 Python
Python列表推导式:优雅与效率的完美融合
Python列表推导式:优雅与效率的完美融合
230 104
|
12天前
|
Python
Python列表推导式:优雅与效率的艺术
Python列表推导式:优雅与效率的艺术
177 99
|
12天前
|
数据处理 Python
解锁Python列表推导式:优雅与效率的完美融合
解锁Python列表推导式:优雅与效率的完美融合
155 99
|
12天前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
227 95
|
10天前
|
索引 Python
098-python列表_切片_slice_开始_结束
本文介绍了Python中列表的切片(slice)操作,通过“前闭后开”原则截取列表片段,支持正负索引、省略端点等用法,并结合生活实例(如切面包、直播切片)帮助理解。切片不改变原列表,返回新列表。
72 4
|
存储 索引 Python
leetcode-350:两个数组的交集 II(python中Counter的用法,海象运算符:=)
leetcode-350:两个数组的交集 II(python中Counter的用法,海象运算符:=)
141 0
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
90 1

推荐镜像

更多