【问题标题】:Python: all index of list greater than x [closed]Python:列表的所有索引大于 x [关闭]
【发布时间】:2015-05-10 08:01:53
【问题描述】:
data = [10, 90, 20, 80, 30, 40, 70, 60]
A_list=[A,B,C,D,E,F,G,H]

如何找到数据中大于 50 的所有值。 接下来如何打印以使其显示

B:90 
D:80
H:60
G:70

我还没有使用枚举。

【问题讨论】:

  • 你的问题不是很清楚。您能否发布一些示例输入和您的预期输出?
  • 请贴出代码
  • 您不需要索引来打印这些数字。

标签: python list loops indexing


【解决方案1】:

如果您只想打印所有高于 50 的值,则可以使用简单的循环。

data = [10, 90, 20, 80, 30, 40, 70, 60]
for value in data:
    if value > 50:
        print(value)

如果您需要索引,请使用此代码。 enumerate 会给你一个自动计数器。

data = [10, 90, 20, 80, 30, 40, 70, 60]
for index, value in enumerate(data):
    if value > 50:
        print(index)

如果您需要一个索引列表来打印值(此时您的问题还不清楚),那么构造这个列表并循环它。

data = [10, 90, 20, 80, 30, 40, 70, 60]
indexes = [index for index, value in enumerate(data) if value > 50]
for index in indexes:
    print(data[index])

根据您评论中的问题,您可以执行以下操作(基于最后一个解决方案)。

data = [10, 90, 20, 80, 30, 40, 70, 60]
characters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
indexes = [index for index, value in enumerate(data) if value > 50]
for index in indexes:
    print('{}: {}'.format(characters[index], data[index]))

此代码使用两个列表的索引。

如果这是家庭作业并且您不能使用enumerate,则必须使用标准for 循环构造索引列表。

indexes = []
for index in range(len(data)):
    if data[index] > 50:
        indexes.append(index)

pythonic 解决方案是这样的。

data = [10, 90, 20, 80, 30, 40, 70, 60]
characters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
for char, value in zip(characters, data):
    if value > 50:
        print('{}: {}'.format(char, value))

【讨论】:

  • 这有帮助!现在我还有一个问题。我有第二个列表,可以说 list1=[A,B,C,D,E,F,G,H] 如果数据 = [10, 90, 20, 80, 30, 40, 70, 60] 我该怎么做打印 B:90 , D:80,G:70, H:60
  • 如果我的回答有帮助,请将其标记为已接受。
  • 你能用简单的解决方案来回答它吗?抱歉,我还没有枚举完。
【解决方案2】:

如果您想要列表中大于 50 的元素,您可以简单地使用列表推导:

[el for el in lst if el>50]

lst 是您的输入列表。

如果您还想要这些元素的索引,您可以:

[(i,el) for (i,el) in enumerate(lst) if el>50]

这会给你一个元组列表(索引,元素)

【讨论】:

    【解决方案3】:

    你想要一个 if 循环;如果 x 大于其中一个数字,打印它? 示例:

    myList = list(range(0,100))
    
    for numb in myList:
        if numb > 50:
            print numb
    

    老实说,我不确定 OP 想要做什么。但这只是一个例子。

    【讨论】:

      【解决方案4】:

      如果你想使用enumerate(),并且你想存储50以上数字的索引和值本身,一种方法是这样做:

      >>> a = [1,2,3,4,5,50,51,3,53,57]
      >>> b, c = zip(*[(d, x) for d, x in enumerate(a) if x > 50])
      >>> print b
      (6, 8, 9)
      >>> print c
      (51, 53, 57)
      

      Enumerate 接受任何支持迭代的对象,并在调用迭代器的next() 方法时返回一个元组(count, value)。由于enumerate() 默认从 0 开始计数,并且每次迭代都会将计数递增 1,因此我们可以使用它来计算当前迭代所在数组的索引。

      现在,我们的列表推导返回一个元组列表,如果我们要打印我们会得到的推导:

      >>> print [(d, x) for d, x in enumerate(a) if x > 50]
      [(6, 51),(8, 53),(9, 57)]
      

      Zip 在给定两个数组时创建一个元组列表,例如:

      >>> f = [1, 2, 3]
      >>> g = [4, 5, 6]
      >>> zipped = zip(f, g)
      >>> zipped
      [(1, 4), (2, 5), (3, 6)]
      

      当与* 运算符一起使用时,zip() 将“解压缩”一个列表。

      因此,当我们“解压缩”列表推导式时,会返回两个元组。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 2023-03-26
        • 2023-03-16
        相关资源
        最近更新 更多