【问题标题】:Python print item in list gives lots of results列表中的 Python 打印项给出了很多结果
【发布时间】:2018-03-07 07:33:14
【问题描述】:
a = [1,2,3]
b = [4,5,6]
#i have 2 lists
for x in a:
 for y in b:
  print x,' vs ',y

然后我得到了

1 对 4、1 对 5、1 对 6 ,2 vs 4 ... 以此类推

我只需要 3 个结果:- 1对4 2 对 5 3对6

平均 a 上的第一个项目与 b 上的第一个项目和第二个与第二个和第三个与第三个 请帮帮我

【问题讨论】:

    标签: python list printing items


    【解决方案1】:
    a = [1,2,3]
    b = [4,5,6]
    
    for first, second in zip(a,b):
        print(first, ' vs ', second)
    

    zipab 的值联系在一起。所以zip(a,b)的第一个元素是[1,4],下一个元素是[2,5]等等。 请注意,zip 创建了一个迭代器,因此您不能通过索引直接访问元素(zip(a,b)[1] 不起作用)。

    【讨论】:

    • 但是兄弟还有一个问题:
    【解决方案2】:

    试试这个:

    a = [1,2,3]
    b = [4,5,6]
    [print('{0} vs {1}'.format(x,y)) for (x,y) in zip(a, b)]
    

    Zip 会将您的两个列表加入 ((1, 4), (2, 5), (3, 6))

    【讨论】:

    • 除了语法错误之外,这个完全不行。
    【解决方案3】:

    其他答案很好,另一种方法是使用枚举。

    for i, x in enumerate(a):
        print x," vs ", b[i]
    

    这会生成一个压缩的排序列表,其中每个值都与其在列表中的索引值配对。例如。 enumerate([1, 2, 3]) => [(0, 1), (1, 2), (2, 3)].

    【讨论】:

    • 如果列表是有序的并且索引是一个简单的计数,这是一个更干净和更pythonic的解决方案。
    【解决方案4】:

    试试这个兄弟:

    x = [1, 2, 3]
    y = [4, 5, 6]
    
    for i, j in zip(x, y):
    print i + " / " + j
    

    它会给你:

    1 / 4
    2 / 5
    3 / 6
    

    同时检查:"for loop" with two variables?

    【讨论】:

      【解决方案5】:

      Zip 非常适合您的用例。

      关于 zip 的更多信息: https://docs.python.org/2/library/functions.html#zip

      a = [1,2,3]
      b = [4,5,6]
      for x in zip(a,b):
          print x[0],' vs ',x[1]
      

      注意:如果您的列表大小不同,则 zip 会在最小元素处停止

      【讨论】:

      • 非常感谢
      【解决方案6】:

      感谢大家 zip(a,b) 和 enumerate(a,b) 都运行良好,但如果我有像 a = [1,2,3,4] 和 b = [1,2,3] 这样的列表,那么 zip (a,b) 仅工作 1,1 2,2 3,3 并且第 4 个 var 不可见,枚举方法运行良好,但最终给出的错误超出范围:)

      【讨论】:

        猜你喜欢
        • 2013-12-20
        • 2016-03-08
        • 1970-01-01
        • 1970-01-01
        • 2017-05-16
        • 2011-09-20
        • 1970-01-01
        • 2012-10-05
        • 2016-02-24
        相关资源
        最近更新 更多