我有一个数组
ar= [2, 3, 45 , 5556, 6, 'empty', 4]
我想对此数组进行规范化,以便稍后进行绘制。
0:2
1:3
2:45
3: 5556
4: 6
5: 0 # not "empty" anymore
6: 4
newAr = {if (ar[i] != 'empty') ar[i] : i for i in range(len(ar))
else: ar[i] = 0 }
我试过这种方式,如何将每个'empty'元素转换为零的条件来规范化这个数组。
更新 主要目标是规范化此阵列。 Ax X:索引,Ax Y代表值。
如果我们有重复项,我们怎样才能确保我们有正确的参考资料。
ar= [2, 3, 45, 4 , 5556, 6, 'empty', 4]
0:2
1:3
2:45
3: 5556
4: 6
5: 0 # not "empty" anymore
6: 4
答案 0 :(得分:4)
这有效:
ar = [2, 3, 45, 5556, 6, 'empty', 4]
new_ar = [0 if x == 'empty' else x for x in ar]
的产率:
[2, 3, 45, 5556, 6, 0, 4]
我在列表推导的前面中使用了Python ternary operator,而不是之后。
修改:如果根据评论需要一套,那么只需在理解中使用{}
代替[]
:
new_ar = {0 if x == 'empty' else x for x in ar}
这将自动确保唯一值。
答案 1 :(得分:1)
In [91]: ar = [2, 3, 45, 5556, 6, 'empty', 4]
In [92]: [i if not isinstance(i, str) else 0 for i in ar]
Out[92]: [2, 3, 45, 5556, 6, 0, 4]
OR
In [93]: [i if i!='empty' else 0 for i in ar]
Out[93]: [2, 3, 45, 5556, 6, 0, 4]
根据您更新的帖子,这应该处理相应的重复删除:
In [105]: d = {n if n!='empty' else 0:i for i,n in enumerate(ar)}
In [106]: newList = [None]*len(d)
In [107]: for n,i in d.iteritems(): newList[i] = n
In [108]: newList
Out[108]: [2, 3, 45, 5556, 6, 0, 4]