在Python中将列添加到2D数组

时间:2017-01-16 21:38:22

标签: python arrays concatenation

我正在尝试在Python中为2D数组添加一个额外的列但是我被卡住了。我有一个2D数组如下:

['000', '101']
['001', '010']
['010', '000']
['011', '100']

然后我从第二列交换了2个元素,并且有类似的东西:

['000', '101']
['001', '000']
['010', '010']
['011', '100']

我想立即使用最后一栏,并将其添加为第三栏,如下所示:

['000', '101', '101']
['001', '010', '000']
['010', '000', '010']
['011', '100', '100']

但我只是设法得到了这个:

['000', '101']
['001', '000']
['010', '010']
['011', '100']
101
000
010
100

我正在添加一个这样的列:

col = column(data,1)
data_res += col

我正在创建一个这样的数组:

with open('data.txt', 'r') as f:
     for line in f:
         line_el = line.split()
         data.append(line_el)

我正在这样交换:

def swap(matrix, id_l, id_r):
    matrix[id_l][1], matrix[id_r][1] = matrix[id_r][1],matrix[id_l][1]
    return matrix

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

由于您将2D列表编写为列表列表(Row Major Order),因此添加列意味着向每行添加一个条目。

您似乎已经创建了一些像这样的数据:

# Create a 2D list
data = [['000', '101'],['001', '010'],['010', '000'],['011', '100']]

所以现在你可以添加一个与最后一列相同的新列,如下所示:

# Loop through all the rows
for row in data:
  lastColumn = row[-1]
  # Now add the new column to the current row
  row.append(lastColumn)

答案 1 :(得分:0)

列表理解可以快速完成。此代码不执行交换,但看起来您已经开始工作了。 :)

data = [['000', '101'],['001', '010'],['010', '000'],['011', '100']]
print [x + [x[1]] for x in data]

# [
#     ['000', '101', '101'],
#     ['001', '010', '010'],
#     ['010', '000', '000'],
#     ['011', '100', '100']
# ]

with open('data.txt', 'r') as f:
    for line in f:
        line_el = line.split()
        data.append([x + [x[1]] for x in line_el])