[英]To each element (string) of the list1 add an element from the list2 in Python
[英]Sum of lists for each element of list1 with all in list2
我想要使脚本能够从文件中读取行,而不是从每一行中获取切片,将1行中的所有切片与2行中的所有切片进行组合,然后将上一步中的所有切片与第三行进行合并。
例如,我们有
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']
我停留在需要将综合结果打入决赛的位置。
我正在尝试这样的代码,但是它是错误的:
for i in lst:
for y in finallist:
finallist.append(i + y)
因此,如果finallist为空,则应在第一次循环迭代中复制lst,如果finallist不为空,则应将每个元素与lst结合,依此类推。
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))
这将为您提供所有组合,然后您可以将所有组合加入字符串中。
我使用re.match()
来从文件中获取单词和整数值。
然后,我计算所有切片的子词并将它们添加到列表中,然后将其添加到全局列表中。
最后,由于itertools.product()
行为类似于嵌套的for循环,因此我计算出了您正在寻找的所有可能性。
然后,使用.join()
获得元组,您将获得所需的最终列表。
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]
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)
将所有候选列表添加到lst
,并且lst
combine()
函数将生成各种组合,然后将结果作为列表返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.