是否有一种简单的方法可以访问具有多个条件的数组内容?
例如,假设
a=[1,2,3,4,5,6,7,8,9,10]
但我只对2到9(含)的值感兴趣
所以我想知道两件事:
1)满足这些条件的元素数量(即a> 1和a <10),因此在本例中它将为8。
2)一个新数组,其值满足这些条件。在这种情况下,
new_a=[2,3,4,5,6,7,8,9]
我仍然厌恶Python中的索引:/
答案 0 :(得分:2)
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1,2,3,4,5,6,7,8,9]
>>> new_a = [x for x in a if x > 1 and x < 10]
>>> print new_a
[2, 3, 4, 5, 6, 7, 8, 9]
>>> print len(new_a)
8
答案 1 :(得分:1)
内置过滤器功能就是为此而构建的。
def filter_fun(x):
return 1<x<10
a = range(10)
new_a = filter(filter_fun, a)
print a
print new_a
print len(new_a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
8
答案 2 :(得分:1)
由于问题被标记为numpy
和array
,这是怎么回事:
In [1]: import numpy as np
In [2]: a = np.array([1,2,3,4,5,6,7,8,9,10])
In [3]: a[(a>1) & (a<10)]
Out[3]: array([2, 3, 4, 5, 6, 7, 8, 9])
答案 3 :(得分:0)
对于某些任意索引,您可以使用itemgetter
构建函数
>>> from operator import itemgetter
>>> interesting_things = itemgetter(2, 3, 4, 5, 6, 7, 8, 9)
>>> a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
>>> interesting_things(a)
('c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')
否则你可以写一个实际的功能以获得额外的灵活性
>>> def interesting_things(L):
... return [item for i, item in enumerate(L) if 1 < i < 10]
...
>>> interesting_things(a)
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
无论如何,您应该将逻辑放入一个函数中,以便于测试和更改