小编Dav*_*K11的帖子

替换嵌套for循环和值分配以进行列表理解

我写了一个函数来计算某些字符(的出现次数A,C,GT在同一位置的多个字符串中),并保存在字典中出现的次数.

例如,使用这两个字符串'ACGG'和'CAGT',它应该返回:

{'A': [1, 1, 0, 0], 'C': [1, 1, 0, 0], 'G': [0, 0, 2, 1], 'T': [0, 0, 0, 1]}
Run Code Online (Sandbox Code Playgroud)

我想将下面的代码转换为列表理解以优化速度.它使用两个嵌套的for循环,输入Motifs是一个包含A的C的G和T的字符串列表.

def CountWithPseudocounts(Motifs):
    count = {}
    k = len(Motifs[0])
    t = len(Motifs)
    for s in 'ACGT':
        count[s] = [0] * k
    for i in range(t):
        for j in range(k):
            symbol = Motifs[i][j]
            count[symbol][j] += 1
return count
Run Code Online (Sandbox Code Playgroud)

我已经尝试替换函数底部的嵌套for循环以获得此列表理解:

count = [ [ count[Motifs[i][j]][j] += 1 ] for i in range(0, …
Run Code Online (Sandbox Code Playgroud)

python optimization for-loop list-comprehension

14
推荐指数
3
解决办法
1940
查看次数

从文本文件中的行中剥离字符串并将列读入字典,并将列表作为值

我一直在努力将输入文件转换为我的算法的正确格式.

我想阅读这个文本文件:

1 -> 7,8
11 -> 1,19
219 -> 1,9,8
Run Code Online (Sandbox Code Playgroud)

进入这本词典:

{ 1: [7, 8], 11: [1, 19], 219: [1, 9, 8]}
Run Code Online (Sandbox Code Playgroud)

我试过这段代码:

with open("file.txt", "r+") as f:
    f.write(f.read().replace("->", " "))
    f.close()

d = {}
with open("file.txt") as file:
    for line in file:
        (key, val) = line.split()
        d[key] = val
Run Code Online (Sandbox Code Playgroud)

但是使用这个代码,它会被第二列中有超过2个参数的事实所困扰.如何从第二列中的元素中创建列表并使用该列表作为每个键的值?

python file-io dictionary python-3.x

1
推荐指数
1
解决办法
121
查看次数