假设我有这个简单的数组:
simple_list = [
('1', 'a', 'aa'),
('2', 'b', 'bb'),
('3', 'c', 'cc')
]
如果我们将此列表视为表,其中用逗号分隔列,用元组分隔行,则我想创建一个仅检索所需列的函数。例如,此函数如下所示:
get_columns(array, tuple_columns_selector))
例如,我想只收集其中的第一列和第三列,在这种情况下,它将返回另一个具有新值的数组:
如果我做:
get_columns(simple_list, (0,2))
get_columns(simple_list, (0,))
它会返回类似:
[('1', 'aa'), ('2', 'bb'), ('1', 'cc')]
[1, 2, 3]
等等。您能帮我创建这个get_columns函数吗?这是我尝试过的代码:
def get_columns(arr, columns):
result_list = []
for ii in arr:
for i in columns:
result_list.append(ii[i])
return result_list
to_do_list = [
('Wake Up', True),
('Brush Teeh', True),
('Go to work', True),
('Take a shower', True),
('Go to bed', False)
]
print(get_columns(to_do_list, (0,)))
最佳答案
from operator import itemgetter
simple_list = [
('1', 'a', 'aa'),
('2', 'b', 'bb'),
('3', 'c', 'cc')
]
cols = (1,) # can be (0, 2)
fn = itemgetter(*cols)
print map(fn, simple_list)
返回值:
[('1', 'aa'), ('2', 'bb'), ('3', 'cc')]
当
cols
是(0, 2)
时。它返回:
[1,2,3]
当
cols
是(1,)
时。所以你的get_columns函数可以是
def get_columns(data, cols):
return map(itemgetter(*cols), data)
关于python - python中的数组操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46182256/