【问题标题】:Creating new list with values from two prior lists使用来自两个先前列表的值创建新列表
【发布时间】:2010-12-21 14:01:39
【问题描述】:

给定长度相同的列表 list1 和 list2,创建一个新列表,其中包含 list1 的最后一个元素,后跟 list2 的最后一个元素,然后是 list1 的倒数第二个元素,然后是第二个list2 的最后一个元素,依此类推(换句话说,新列表应该由 list1 和 list2 的反向元素交替组成)。例如,如果 list1 包含 [1, 2, 3] 并且 list2 包含 [4, 5, 6] ,那么新列表应该包含 [3, 6, 2, 5, 1, 4] 。将新列表与变量 list3 相关联。

我的代码:

def new(list1,list2):
    i = 0
    j = 0
    new_list = []
    for j in list1:
        new_list[i-1] = list2[j-1]
        i+= 1
        j += 1
        new_list[i-1] = list2 [j-1]
        i+= 1
        j += 1
    return new_list

我知道,很乱=_=,帮忙?

【问题讨论】:

  • 这听起来很像家庭作业。如果是,你应该这样标记它。
  • 不仅杂乱无章;它甚至不起作用——它会在你第一次尝试执行new_list[i-1] = list2[j-1] 时爆炸。 j 也是来自 list1 的 VALUE,但您随后将其用作 list2 的 SUBSCRIPT!建议:使用 100、200 等测试数据值——如果您尝试将它们用作列表下标,您将立即得到异常,而不是稍后。

标签: python list


【解决方案1】:

我可以建议您改用.append() 列表方法来简化您的工作吗?

>>> mylist = []
>>> mylist.append(1)
>>> mylist
[1]
>>> mylist.append(7)
>>> mylist
[1, 7]

还有另一个小建议,我建议不要迭代一个列表或另一个,而是迭代数字索引:

for i in range(len(list1)):

【讨论】:

  • 我不想手动浏览两个列表并添加值,我想从两个预先存在的列表中添加,无论如何谢谢。
  • 但是请注意,append() 方法可以将任何内容作为参数...包括现有列表的元素。比如,比如说...new_list.append(list1[i])) 或类似的。
【解决方案2】:
l1 = [1,2,3]
l2 = [4,5,6]

newl = []
for item1, item2 in zip(reversed(l1), reversed(l2)):
    newl.append(item1)
    newl.append(item2)

print newl

【讨论】:

    【解决方案3】:

    单线:

    reduce(lambda x,y: list(x+y), reversed(zip(list1,list2)))
    

    list 是必要的,因为前面的操作返回一个元组。

    【讨论】:

    • 为了好玩而打高尔夫球:sum(map(list,reversed(zip(list1,list2))),[])
    • mm 感谢您让我想到将list() 传递给reduce(),而不是反之亦然。减少嵌套。
    【解决方案4】:
    list(sum(zip(list1,list2)[::-1],()))
    

    【讨论】:

      【解决方案5】:

      另一种方式,

      from itertools import izip
      l1 = [1, 2, 3, 4]
      l2 = [5, 6, 7, 8]
      l = []
      for _ in izip(reversed(l1), reversed(l2)): l.extend(_)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-15
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-09
        • 2022-01-11
        相关资源
        最近更新 更多