假设我有这个简单的数组:

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/

10-11 15:59