代码之家  ›  专栏  ›  技术社区  ›  CENTURION

Python:用更少的变量编写新列表

  •  1
  • CENTURION  · 技术社区  · 6 年前

    我很难思考这个问题。

    我有两个列表,如下所示。

    my_orig_list = [(None, None), (None, None), (None, None), (None, None),(None, None), (None, None)]
    new_values = [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e')]
    

    我怎样才能得到它呢 (None, None) 作为最终输出,如以下期望输出所示?

    my_new_list = [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e'), (None, None)]
    

    我还应该声明 new_values 将不时发生变化。

    我曾想过确定列表的长度,然后编写一个函数来交换这些值,但我似乎无法理解这个相对简单的过程。

    如果已经有人问过,我道歉。也许我对术语不太熟悉,不知道这叫什么。

    3 回复  |  直到 6 年前
        1
  •  3
  •   P.hunter    6 年前

    只是切片 让它变得简单 。。

    my_orig_list[:len(new_values)] = new_values[:]
    

    请记住 new_values[:] 复制列表,即再复制一份, 而只是在做。

    my_orig_list[:len(new_values)] = new_values

    将提供对它的引用,只要不操纵 new_values ,无论我如何推荐 新的\u值[:]

        2
  •  1
  •   Richard Stoeffel    6 年前

    您可以遍历新值,并使用每个数组的索引更新原始值,如下所示:

    for i in range(len(new_values)):
        my_orig_values[i] = new_values[i]
    

    这将把my\u orig\u值的第一个值设置为new\u值的第一个值,依此类推,直到new\u值结束

        3
  •  0
  •   Rehan Azher    6 年前

    可能如下所示:

    new_values.extend(my_orig_list[:-len(new_values)])