【问题标题】:Python3: zip in rangePython3:压缩范围
【发布时间】:2016-05-18 18:57:02
【问题描述】:

我是 Python 新手,我正在尝试将 2 个列表压缩成 1 个,而我已经能够做到这一点。我有 2 个列表,其中包含一些内容,但我要求用户输入一个数字,该数字应该确定范围。 所以我有 List1: A1, A2, A3, A4, A5, A6 和 List2: B1,B2,B3,B4,B5,B6 我知道如何显示 2 个完整列表,但我想做的是,如果用户输入数字“3”,则 zip 应该只显示:(A1,B1), (A2,B2), (A3, B3) 而不是整个列表。所以这就是我尝试过的:

a = ["A1", "A2", "A3", "A4", "A5", "A6"]
b = ["B1", "B2", "B3", "B4", "B5", "B6"]
c = zip(a,b)
number = int(input("please enter number"))
for x in c:
    print(x[:number])

但这不起作用。我试图查找它,但找不到任何东西。如果有人可以帮助我,我会很高兴。

【问题讨论】:

  • 看看enumerate 函数和break 关键字 - 这会让你到达你需要的地方。或者,查看itertools.islice

标签: python python-3.x


【解决方案1】:

您可以使用itertools.islice()zip() 的结果进行切片:

>>> from itertools import islice
>>> list(islice(c, number))
[('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')]

【讨论】:

    【解决方案2】:

    您不需要在此处使用for 循环 - 您只需执行您尝试执行的操作一次。此外,zip 返回的生成器对象不能“下标”(使用[] 访问),因此您需要先使用list 将其转换为列表。

    下面是一些修改后的代码:

    a = ["A1", "A2", "A3", "A4", "A5", "A6"]
    b = ["B1", "B2", "B3", "B4", "B5", "B6"]
    c = list(zip(a,b))
    number = int(input("please enter number"))
    print(c[:number])
    

    使用和输出示例:

    please enter number 3
    [('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')]
    

    【讨论】:

      【解决方案3】:

      如有疑问,请使用打印:

      >>> a = ["A1", "A2", "A3", "A4", "A5", "A6"]
      >>> b = ["B1", "B2", "B3", "B4", "B5", "B6"]
      >>> c = zip(a,b)
      >>> number = 3
      >>> for x in c:
      ...  print(x)
      ... 
      ('A1', 'B1')
      ('A2', 'B2')
      ('A3', 'B3')
      ('A4', 'B4')
      ('A5', 'B5')
      ('A6', 'B6')
      

      如您所见,x 是一对,所以x[:number] 只会显示number 的第一个项目。

      您真正想要做的是显示number 第一对:

      >>> c = list(zip(a,b))
      >>> print(c[:3])
      [('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3')]
      

      (请注意,我在zip() 返回的值上使用了list(),因为zip 对象不可下标)

      如果你想迭代而不是像这样打印它们,这很容易:

      >>> for x in c[:3]:
      ...     print(x)
      ... 
      ('A1', 'B1')
      ('A2', 'B2')
      ('A3', 'B3')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多