-2

嗨,我想检查是否有任何方法可以在数组上获取子项,例如下面。

Array = [('a',1,'aa'),('b',2,'bb'),('c',3,'cc')]

如果想像这样打印出数组的所有第二个子项[ 1, 2, 3]

或者像这样的第三个子项[ aa , bb, cc]

请帮助我...非常感谢

4

4 回答 4

0

你可以list-comprehension像这样使用function

def get_elem(arr, n):
    return [x[n] for x in arr]

然后调用它:

my_array = [('a', 1, 'aa'), ('b', 2, 'bb'), ('c', 3, 'cc')]
print get_elem(my_array, 1)

输出:

[1, 2, 3]
于 2017-07-01T18:19:18.350 回答
0

Python 的核心设计是非常容易地处理这些任务。您不需要循环来合并、提取、拆分、列表。

列表推导非常适合在容器上执行这种操作。

生成器表达式可能更有用,用法取决于上下文。

以下是两者的示例:

array = [('a',1,'aa'), ('b',2,'bb'), ('c',3,'cc')]
sub_2 = [item[2] for item in array] # sub_2 is a classique list, with a length
gen_1 = (item[1] for item in array) # gen_1 is a generator, which gather value on the fly when requested

print(sub_2)
for i in gen_1:
    print(i)

输出:

['aa', 'bb', 'cc']
1
2
3

您可以编写一个实用函数来提供帮助,但在简单的情况下,最好直接在需要的地方编写生成器。

这是您可以编写的实用函数的示例:

def sub(container, index):
    return (item[index] for item in container)

print([i for i in sub(array, 0)])

输出['a', 'b', 'c']

于 2017-07-01T18:31:03.770 回答
-1

您可以通过创建一个函数来获取元组(或列表)中的第 n 个项目,然后在循环中调用该函数,如下所示:

my_array = [('a', 1, 'aa'), ('b', 2, 'bb'), ('c', 3, 'cc')]
result_array = []
n = 2 # set your desired index here

def get_nth(some_tuple, index):
    result_array.append(some_tuple[index] if len(some_tuple) > index else None)

for sub_item in my_array:
    get_nth(sub_item, n)

print result_array
于 2017-07-01T18:14:15.910 回答
-1

使用邮编:

Array = [ ('a',1,'aa'),('b',2,'bb'),('c',3,'cc') ]
zipped = zip(*Array) #gives your desired form
for item in zipped:
    print(item)

输出:

('a', 'b', 'c')
(1, 2, 3)
('aa', 'bb', 'cc')
于 2017-07-01T18:17:42.213 回答