假設我有兩個簡單的字串串列:
a = ["today", "I", "want", "to", "eat", "some", "cake."]
b = ["to", "da", "y", "I", "wa", "nt", "to", "ea", "t", "some", "ca", "ke", "."]
在串列中,串列的b某些字串(不是全部)a被拆分為多個子字串。請注意,與中的字串b對應的子字串a是相鄰的,并且順序相同,如上例所示。
我想獲得一個串列c,其中b對應于單個字串的子字串a放在一個子串列中:
c = [["to", "da", "y"], ["I"], ["wa", "nt"], ["to"], ["ea", "t"], ["some"], ["ca", "ke", "."]]
不幸的是,我沒有任何代碼可以分享,因為我不知道如何解決這個問題。
謝謝!
uj5u.com熱心網友回復:
a = ["today", "I", "want", "to", "eat", "some", "cake."]
b = ["to", "da", "y", "I", "wa", "nt", "to", "ea", "t", "some", "ca", "ke", "."]
c = []
for element in a:
temp_list = []
while "".join(temp_list) != element:
temp_list.append(b.pop(0))
c.append(temp_list)
c 的值:
[['to', 'da', 'y'],
['I'],
['wa', 'nt'],
['to'],
['ea', 't'],
['some'],
['ca', 'ke', '.']]
我不知道是否還有其他聰明的方法可以做到這一點。只需使用 .pop(0) 來保存 ua 位代碼
uj5u.com熱心網友回復:
@Ben.S. 的答案有效,但時間復雜度為O(mxnxk),其中m和n是兩個串列的長度,k是單詞的平均長度。
解決時間復雜度為O(n)的問題的更有效方法是繼續將單詞片段附加b到新串列的最后一個子串列,但跟蹤附加到最后一個子串列的片段的總長度當總長度等于 中相應單詞的長度時,列出并附加一個新的子串列a:
c = []
for i in b:
if not c or length == target:
length = 0
target = len(a[len(c)])
c.append([])
length = len(i)
c[-1].append(i)
演示:https ://replit.com/@blhsing/ExoticConsiderateSearchservice
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535263.html
標籤:Python细绳列表
上一篇:如何將字串轉換為沒有空格的陣列
