这是卡塔的挑战。该函数应在字符串中返回最大数量的后续元音。
我自己完成此程序后,发现了这个非常实用的解决方案。
有人可以逐步解释代码吗?我想在这里彻底理解联接位和拆分位是如何相互完成的。
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) 我还没有找到有办法做到这一点.假设我收到一个像这样的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,它有助于理解结构.但有时数据量巨大,需要时间
有什么方法可以帮助我吗?
我有一个仅在特定位置可变的 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) 发电机一旦使用过一次,就无法再次使用。为什么是这样?
考虑以下代码:
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 内置的东西,但为什么会这样呢?是否有特定原因只允许生成器对象执行一次?
将整数添加到列表的一部分的最有效方法是什么?
示例:
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添加到该索引中的值.然后返回包含修改范围的列表.
我尝试使用循环,但速度不够快.需要更快的方法.