list1和list2中每个元素之和

2024-06-08 19:59:32 发布

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

我想做一个脚本,从文件中读取行,然后从每行获取切片,将1行的所有切片与2行的所有切片合并,然后将上一步的所有切片与第3行合并。你知道吗

例如,我们有

Stackoverflow (4)
python (3)
question (3)

我得到的第一张单子上有(数字)字母片。你知道吗

lst = ['Stac', 'tack', 'acko', 'ckov', 'kove', 'over', 'verf', 'erfl', 'rflo', 'flow']

然后我需要把它和第二个列表结合起来:

lst = ['pyt', 'yth', 'tho', 'hon']

期望输出:

finallist = ['Stacpyt', 'tackpyt', 'ackopyt', 'ckovpyt', 'kovepyt', 'overpyt', 'verfpyt', 'erflpyt', 'rflopyt', 'flowpyt' 'Stacyth', 'tackyth', 'ackoyth', 'ckovyth', 'koveyth', 'overyth', 'verfyth', 'erflyth', 'rfloyth', 'flowyth', ..... ,  'erflhon', 'rflohon', 'flowhon']

然后是第三个列表:

lst = ['que', 'ues', 'est', 'sti', 'tio', 'ion']

finallist = ['Stacpytque', 'tackpytque', 'ackopytque', 'ckovpytque', 'kovepytque', 'overpytque', 'verfpytque', 'erflpytque', 'rflopytque', .... 'erflhonion', 'rflohonion', 'flowhonion']

我坚持在一个点上,我需要使finallist与综合结果。你知道吗

我正在尝试这样的代码片段,但它是错误的:

for i in lst:
    for y in finallist:
        finallist.append(i + y)

所以如果finallist是空的-它应该在第一个循环迭代中复制lst,如果finallist不是空的,它应该将每个元素与lst结合起来,以此类推。你知道吗


Tags: in脚本列表for字母切片数字stackoverflow
3条回答

使用ittertools

import itertools
list1 = ['Stac', 'tack', 'acko', 'ckov', 'kove', 'over', 'verf', 'erfl', 'rflo', 'flow']
list2 = ['pyt', 'yth', 'tho', 'hon']
list3 = ['que', 'ues', 'est', 'sti', 'tio', 'ion']

final_list = list(itertools.product(list(itertools.product(list1,list2)),list3))

这将给你所有的组合,然后你就可以把所有的组合,得到你的字符串。你知道吗

import itertools

def combine(lst):
    result = list(itertools.product(*lst))
    result = [''.join(item) for item in result]
    return result

list1 = ['Stac', 'tack', 'acko', 'ckov', 'kove', 'over', 'verf', 'erfl', 'rflo', 'flow']
list2 = ['pyt', 'yth', 'tho', 'hon']
list3 = ['que', 'ues', 'est', 'sti', 'tio', 'ion']

lst = [list1, list2, list3]  # append more list to lst, then pass lst to combination
print combine(lst)

将所有候选列表附加到lstcombine()函数将生成各种组合,然后将结果作为列表返回。你知道吗

我使用^{}从文件中获取单词和整数值。你知道吗

然后,我计算所有切片的子词并将它们添加到一个列表中,然后将其添加到一个全局列表中。你知道吗

最后,我计算了您要寻找的所有可能性,感谢^{},它的行为类似于嵌套for循环。你知道吗

然后,^{}得到元组,然后得到所需的最终列表。你知道吗

from itertools import product
from re import match

the_lists = []

with open("filename.txt", "r") as file:
    for line in file:
        m = match(r'(.*) \((\d+)\)', line)
        word = m.group(1)
        num = int(m.group(2))
        the_list = [word[i:i+num] for i in range(len(word) - num + 1)]
        the_lists.append(the_list)

combinaisons = product(*the_lists)

final_list = ["".join(c) for c in combinaisons]

相关问题 更多 >