如何在Python中以多维数组打印数据

时间:2017-03-19 07:09:28

标签: python arrays python-2.7 multidimensional-array

我正在使用Python 2.7,我在这个结构中有一个数据列表:

list = [(('a', 'b'), 'foo', (1, 2)), (('c', 'd'), 'bar', (3, 4)), (('e', 'f'), 'baz', (5, 6))]

我如何打印以获得此输出:

(a, b) (c, d) (e, f)

我尝试按照此print list[0:][0])进行打印,但这会返回((a, b), 'foo', (1, 2))

然后我尝试像print list[0:][0][0])一样打印它,但这不起作用,因为它只返回(a, b)而没有剩下的

我正在寻找一个简短有效的解决方案,因为我将在条件中使用此元组来检查它们是否已存在于列表中

提前致谢!

1 个答案:

答案 0 :(得分:1)

所以你的列表看起来像(用字符串替换未定义的符号):

In [135]: alist = [(('a', 'b'), 'foo', (1, 2)), (('c', 'd'), 'bar', (3, 4)), (('e', 'f', 'baz', (5, 6)))]

正常列表显示

In [136]: alist
Out[136]: 
[(('a', 'b'), 'foo', (1, 2)),
 (('c', 'd'), 'bar', (3, 4)),
 ('e', 'f', 'baz', (5, 6))]

我可以遍历列表并收集每个元组的第一个元素:

In [137]: [x[0] for x in alist]
Out[137]: [('a', 'b'), ('c', 'd'), 'e']

关闭,除了最后一个元组不同。这是故意的,还是你只是错过了一对()?

我可以定义一个小函数,为没有()的元组格式化字符串。它还可以区分3元素元组和4元素。

def pfoo1(atuple):
    if len(atuple)==3:
        return '(%s, %s)'%atuple[0]
    else:
        return '(%s, %s)'%(atuple[:2])

In [159]: for x in alist:
     ...:     print(pfoo1(x))
     ...:     
(a, b)
(c, d)
(e, f)
In [161]: [pfoo1(x) for x in alist]
Out[161]: ['(a, b)', '(c, d)', '(e, f)']
In [162]: print('\n'.join(_))
(a, b)
(c, d)
(e, f)

所以基本上只需要迭代列表,从每个元组中提取正确的元素,并将它们格式化为显示字符串。