当前位置: 首页 > 面试题库 >

合并列表中的元素:好像python用两种不同的方式对待同一个项目,我不知道为什么[重复]

汪正雅
2023-03-14
问题内容

这个问题已经在这里有了答案

什么时候“ i + = x”与Python中的“ i = i + x”不同? (3个答案)

7年前关闭。

我正在通过CodeAcademy进行工作,那里有一个问题尚未得到解答。任务是获取列表列表,并为其所有元素制作一个列表。紧接下面的代码是有效的我的答案。但是我不明白的是为什么“项目”被视为该代码列表中的元素,而(请参见下面的注释)…

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]

def join_lists(*args):
    new_list = []
    for item in args:        
        new_list += item
    return new_list


print join_lists(m, n, o)

…下面代码中的“项目”被视为整个列表,而不是列表中的元素。下面的代码给出了输出:

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

我还尝试使用: new_list.append(item [0:] [0:])
认为它会遍历索引和子索引,但给出的结果相同。我只是不明白这是怎么解释的。

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]


def join_lists(*args):
    new_list = []
    for item in args:        
        new_list.append(item)
    return new_list


print join_lists(m, n, o)

另外,我知道我可以在上面的代码中添加另一个for循环,并且我知道为什么可以这样做,但是我仍然不明白为什么Python会以不同的方式解释它们。


问题答案:

+=名单上就地增加操作符做同样的事情与调用list.extend()new_list.extend()进行迭代,并将每个元素添加到列表中。

list.append()另一方面,将 单个 项目添加到列表中。

>>> lst = []
>>> lst.extend([1, 2, 3])
>>> lst
[1, 2, 3]
>>> lst.append([1, 2, 3])
>>> lst
[1, 2, 3, [1, 2, 3]]


 类似资料:
  • 问题内容: 我需要对列表中的最后一个元素执行一些特殊的操作。有没有比这更好的方法了? 问题答案: 如果您不想复制列表,可以制作一个简单的生成器: notlast的另一种定义:

  • 我正在尝试合并两个不同类型的列表。我得到了两个不同的API响应从改造在一个android应用程序,第一个列表是一个电影列表定义为 公共类列表{ 我通过以下操作成功地从API中检索到列表 然后,我尝试将一个类型列表和一个类型字符串列表组合起来,以创建一个新类ListingAndImage(字符串是一个URL,我将加载到imageview中) 我的问题是,哪种方式最好将这两个列表组合起来,形成一个列表

  • 问题内容: 我有两个表(表A和表B)。 它们具有不同的列数-假设表A具有更多列。 如何合并这两个表,并为表B没有的列获取空值? 问题答案: 为具有较少列的表添加额外的列作为null

  • 问题内容: 在我们的一个项目中,我们使用与MongoDB实例对话的Java Webapp。在数据库中,我们用来跟踪一些对象关系。我们使用jackson(使用mongodb-jackson- mapper)对POJO对象进行反序列化。 但是,我们使用相同的POJO然后将其反序列化到外部世界,在该世界中,我们的前端负责呈现JSON。 现在,我们需要一种外部环境进行序列化的方法,以包含来自的引用对象(以

  • 我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗? table2.colz和table3.colx是用来匹配条目的ID。这两个最终结果都符合要求。 编辑(进一步解释我的表结构) COLX是表3的ID,以匹配表2中的COLZ 表2 ID中的COL1与表1中的COL1匹配 结果我需要的是表1.col1,表1.c

  • 在这里完成python noob,但我正在慢慢地将我的头缠绕在它周围。我正在制作一个1v1光环3锦标赛风格的程序,随机匹配玩家并选择地图、游戏类型等。。。 我遇到的问题是,我不知道如何从列表中随机调用两个不同的字符串。 假设这是球员名单,我将如何打印: 玩家1 vs玩家3 我尝试了一些不同的方法,但都没有用。我确实对随机代码库有一点了解,但我不知道如何做到这一点 随机打印。选择(玩家列表)“vs”