枚举和映射的使用

2024-09-27 00:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

newResidues = [1, 2, 3, 4, 5]
newI = [[1,0,1,0,1],[1,1,0,0,0],[1,0,0,1,0]]
newI = np.array(newI)

for i in range(newI.shape[0]):
    indices = [for i,num in enumerate(newI) if num == 1] #line1
    indicesToResidues = dict(zip(indices,newResidues[indices]))#line2

所以我知道我的代码不正确。。。这只是我想做的尝试

在第1行中,我要做的是在矩阵中每行有1的地方分别列出索引。所以矩阵第一行的索引看起来像[0,2,5]

在第2行中,尝试将这些索引映射到列表中具有相同索引的特定值

任何帮助/意见将不胜感激,谢谢


Tags: inforifnprange矩阵arraynum
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:07

将循环替换为以下内容:

from itertools import compress
for i in newI:
    print map(lambda _: newResidues.index(_), compress(newResidues, i))

^{}非常简洁,非常适合您的用例。在上面从compress获取值之后,它会从newResidues找到每个值的索引。但是,如果newResidues中有重复的值,这将无法正常工作

相关问题 更多 >

    热门问题