Python:列表的所有索引都大于x

时间:2015-05-10 08:01:53

标签: python list loops indexing

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。我还没有使用枚举。

4 个答案:

答案 0 :(得分:2)

如果您只想打印高于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))

答案 1 :(得分:1)

如果您希望列表中的元素大于50,您只需使用列表推导:

[el for el in lst if el>50]

其中lst是您的输入列表。

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

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

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

答案 2 :(得分:0)

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

myList = list(range(0,100))

for numb in myList:
    if numb > 50:
        print numb

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

答案 3 :(得分:0)

如果你想使用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接受任何支持迭代的对象,并在调用迭代器的(count, value)方法时返回元组next()。由于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()将"解压缩"一个清单。

所以,当我们"解压缩"列表理解,返回两个元组。

希望这有帮助!