删除python

时间:2018-01-30 06:11:34

标签: python list csv calculation

我有一个清单,

list1 = [[1,4,0,0],[2,0,1,0],[9,8,4,0],[0,2,5,3]]

这个列表是这样的;

list1 =[[d[x][y] for y in key] for x in key] 

所以当我用list1写这个writer.writerows(list1)时,它的excel表显示了这个:

1 4 0 0
2 0 1 0
9 8 4 0 
0 2 5 3

如你所知,它不对称,我做了一个新的清单,

list2 = [[d[x][y]+d[y][x] for y in key] for x in key]

我本可以在excel文件中创建这个表:

2 6 9 0
6 0 9 2
9 9 8 5
0 2 5 6

但问题来了。我必须在x==y中创建一个d[x][y]的文件,然后不应计算其值。所以我希望我的结果是这样的:

1 6 9 0 
6 0 9 2
9 9 4 5 
0 2 5 3

仅供参考,我用过:

d = defaultdict(lambda:defaultdict(int))
keys = sorted(d)

我该如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用双列表推导和三元运算符来选择何时添加元素:

代码:

list2 = [[list1[x][y] + list1[y][x] if x != y else list1[x][y]
          for x in range(len(list1))] for y in range(len(list1[0]))]

测试代码:

list1 = [[1, 4, 0, 0], [2, 0, 1, 0], [9, 8, 4, 0], [0, 2, 5, 3]]
list2 = [[list1[x][y] + list1[y][x] if x != y else list1[x][y]
          for x in range(len(list1))] for y in range(len(list1[0]))]
print(list2)

结果:

[[1, 6, 9, 0], [6, 0, 9, 2], [9, 9, 4, 5], [0, 2, 5, 3]]