【问题标题】:using a for loop with xrange() on a multiple lists在多个列表上使用带有 xrange() 的 for 循环
【发布时间】:2016-09-08 20:41:48
【问题描述】:

我有以下代码,它根据 len(list1) 为 list1 中的每个项目分配一个数字:

list1 = ["a", "b", "c", "d"]
result = []

for i in xrange(0, len(list1)):
    result += (str(i+1), list1[i], )

new_result = list(izip(*[iter(result)]*2))

结果将打印如下:

[("1", "a"), ("2", "b"), ("3", "c"), ("4", "d")]

如果我有多个列表:list2、list3、list4

如何将它应用到此代码中?..

【问题讨论】:

  • 多个列表的理想结果是什么?
  • 你根本不需要循环:result = [(str(i), x) for i, x in enumerate(list1, 1)]。根据需要将list1 替换为list2 等。
  • @chepner 它对我来说工作得很好,但是如果我采用你的方法并且我为我拥有的 6 个列表编写了该行,它是否认为重复的代码可以用相同的方法缩短和简化但使用循环,只是要求提高我的代码技能。
  • 无论您做什么,您都可以将list1list2 或其他任何东西作为参数包装在一个函数中。对函数本身的调用可以在遍历列表的循环体中。
  • @chepner 感谢您的帮助,您上面的回答让我明白了很多,下面回答中的 for 循环也完成了任务..

标签: python list tuples itertools


【解决方案1】:

使用List Comprehensions

lists = [   ["a", "b", "c", "d"],   # list1
            ["e", "f", "g", "h"]]   # list2

new_results = [[(str(idx), x) for idx, x in enumerate(l, 1)] for l in lists]
print(new_results)

# Output
[[('1', 'a'), ('2', 'b'), ('3', 'c'), ('4', 'd')], [('1', 'e'), ('2', 'f'), ('3', 'g'), ('4', 'h')]]

【讨论】:

    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2018-12-27
    • 2020-11-04
    • 2017-02-18
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多