質問が間違っているように思います。
質問を次のように修正して、考えてみました。
masters1 = ['', '美しい', '', '',
'いる']
ans1 = ['高橋は', '足を', 'して']
masters1の ''
に、ans1のリストにある要素を順番通りに格納して、
['高橋は', '美しい', '足を', 'して', 'いる'] と出力したい。
Python
1masters1 = ['', '美しい', '', '', 'いる']
2ans1 = ['高橋は', '足を', 'して']
3
4it = iter(ans1)
5master2 = [ s if s else next(it) for s in masters1 ]
6
7print(master2)
追記
追加された質問への解答です。
Python
1import re
2
3masters1 = "高橋は美しい足をしている"
4ans1 = ['高橋は', '足を', 'して']
5
6masters1 = ['' if s in ans1 else s
7 for s in re.split('(' + '|'.join(ans1) + ')', masters1) if s]
8
9it = iter(ans1)
10masters2 = [ s if s else next(it) for s in masters1 ]
11
12print(masters2)
もっと簡単に書けるかもしれませんが。
追記2
もっと簡単に書けました。
Python
1import re
2
3masters1 = "高橋は美しい足をしている"
4ans1 = ['高橋は', '足を', 'して']
5
6masters2 = [ s for s in re.split('(' + '|'.join(ans1) + ')', masters1) if s ]
7
8print(masters2)
追記3
Python
1import re
2
3masters1 = "高橋は美しい足をしている"
4ans1 = ['高橋は', '足を', 'して']
5
6masters2 = ['' if s in ans1 else s
7 for s in re.split('(' + '|'.join(ans1) + ')', masters1) if s]
8print(masters2)
最初の回答で、['', '美しい', '', '', 'いる'] を
['高橋は', '美しい', '足を', 'して', 'いる'] にする方法を示しました。
追記で、"高橋は美しい足をしている" を
['', '美しい', '', '', 'いる'] に変換し、それを
['高橋は', '美しい', '足を', 'して', 'いる'] にする方法を示しました。
追記2で、"高橋は美しい足をしている" を
['高橋は', '美しい', '足を', 'して', 'いる'] にする方法を示しました。
すなわち、今回の方法は追記ですでに示されていたわけです。
それが分からないということは、回答をもらっていても、その意味を理解しようとはせず、
ただ実行して結果が得られたからそれで十分だと思っているからでしょう。
'(' + '|'.join(ans1) + ')' とは何か?
re.split('(' + '|'.join(ans1) + ')', masters1) とは何か?
[s for s in re.split('(' + '|'.join(ans1) + ')', masters1)] とは何か?
[s for s in re.split('(' + '|'.join(ans1) + ')', masters1) if s] とは何か?
さらに先頭の s を '' if s in ans1 else s に変えるのはどういうことか?
このようなことを全部理解しようとしないと、これからも困りますよ。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 09:22
2020/11/25 19:33