相关疑难解决方法(0)

最长的元音子串-Python

这是卡塔的挑战。该函数应在字符串中返回最大数量的后续元音。

我自己完成此程序后,发现了这个非常实用的解决方案。

有人可以逐步解释代码吗?我想在这里彻底理解联接位和拆分位是如何相互完成的。

def solve(string):
    return max(map(len, ''.join(i if i in 'aeiou' else ' ' for i in string).split()))
Run Code Online (Sandbox Code Playgroud)

python string

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

有助于理解json(dict)结构的函数

我还没有找到有办法做到这一点.假设我收到一个像这样的JSON对象:

{'1_data':{'4_data':[{'5_data':'hooray'}, {'3_data':'hooray2'}], '2_data':[]}}
Run Code Online (Sandbox Code Playgroud)

很难立即说出,我应该如何从3_data键获得价值:data['1_data']['4_data'][1]['3_data']

我知道pprint,它有助于理解结构.但有时数据量巨大,需要时间

有什么方法可以帮助我吗?

python

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

查找仅在 Python 中特定位置可变的字符串的所有排列

我有一个仅在特定位置可变的 DNA 序列,需要找到所有可能的情况:

DNA_seq='ANGK' #N can be T or C  and K can be A or G
N=['T','C']
K=['A','G']
Run Code Online (Sandbox Code Playgroud)

结果:

['ATGA','ATGG','ACGA','ACGG']
Run Code Online (Sandbox Code Playgroud)

@vladimir 提供的解决方案非常适合像上面的示例这样的简单情况,但对于如下的复杂场景,内存很快就会耗尽。对于下面的示例,即使使用 120G 内存运行也会出现内存不足错误。这是令人惊讶的,因为组合总数约为 500K 的 33bp 字符串,我认为这不会消耗超过 100G 的 RAM。我的假设是错误的吗?有什么建议么?

N=['A','T','C','G']
K=['G','T']
dev_seq=[f'{N1}{N2}{K1}{N3}{N4}{K2}{N5}{N6}{K3}TCC{N7}{N8}{K4}CTG{N9}{N10}{K5}CTG{N11}{N12}{K6}{N13}{N14}{K7}{N15}{N16}{K8}' for \
           N1,N2,K1,N3,N4,K2,N5,N6,K3,N7,N8,K4,N9,N10,K5,N11,N12,K6,N13,N14,K7,N15,N16,K8 in \
               product(N,N,K,N,N,K,N,N,K,N,N,K,N,N,K,N,N,K,N,N,K,N,N,K)]
Run Code Online (Sandbox Code Playgroud)

python python-itertools python-3.x

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

为什么Python生成器只能使用一次?

发电机一旦使用过一次,就无法再次使用。为什么是这样?

考虑以下代码:

def generator(n):
  a = 1

  for _ in range(n):
    yield a
    a += 1

def run_generator(generator):
  for a in generator:
    print(a, end = " ")
Run Code Online (Sandbox Code Playgroud)

如果我要执行这个:

count_generator = generator(10)
run_generator(count_generator)
run_generator(count_generator)
Run Code Online (Sandbox Code Playgroud)

它只会打印:

1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

基本上,生成器在执行一次后就会死亡。

我知道生成器只能使用一次这一事实是 Python 内置的东西,但为什么会这样呢?是否有特定原因只允许生成器对象执行一次?

python generator

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

在Python中为列表中的值范围添加值的最有效方法?

将整数添加到列表的一部分的最有效方法是什么?

示例:

input : [1,5,3,7,4,3]

range of list to modify is 2,4

add 3 to range

output : [1,5,6,10,7,3]
Run Code Online (Sandbox Code Playgroud)

说明:

首先使用索引2和4获取子列表.然后将3添加到该索引中的值.然后返回包含修改范围的列表.

我尝试使用循环,但速度不够快.需要更快的方法.

python performance

-2
推荐指数
1
解决办法
98
查看次数