假設我有一個整數值n和以下串列
myList = ["This", "is", "a", "great", "list"]
n = 2
如何在輸出串列中拆分此串列,該串列“拆分”myList為另一個串列,其中每個元素都是n連續的單詞。像這樣
outputList = ["This is", "is a", "a great", "great list"]
uj5u.com熱心網友回復:
您可以zip結合使用生成器運算式:
>>> [" ".join(t) for t in zip(*(myList[i:] for i in range(n)))]
['This is', 'is a', 'a great', 'great list']
對于n = 3:
['This is a', 'is a great', 'a great list']
uj5u.com熱心網友回復:
使用嵌套回圈。
因此,您需要在這里做的是使用嵌套回圈。外回圈獲取第一個單詞,內回圈獲取每個后續??單詞。
所以,像這樣:
myList = ["This", "is", "a", "great", "list"]
n = 2
final = []
for i in range(len(myList) - n 1):
if n>1:
temp = myList[i]
for j in range(n-1):
temp = " " myList[i j 1]
final.append(temp)
else:
final.append(myList[i])
執行回圈后,我們得到一個 final 值,等于:
['This is', 'is a', 'a great', 'great list']
對于 n=3,我們得到以下串列:
['This is a', 'is a great', 'a great list']
uj5u.com熱心網友回復:
以下代碼將起作用:-
myList = ["This", "is", "a", "great", "list"]
n = 2
tempN = n
res = []
for i in range(len(myList)-n 1):
start, tempRes = myList[i], ""
for j in range(i, len(myList)):
if tempN>0:
if tempN == 1:
tempRes = f"{myList[j]}"
else:
tempRes = f"{myList[j]} "
tempN -= 1
else:
res.append(tempRes)
tempN = n
print(res)
這里發生的是,第一個回圈迭代myList到倒數第二個元素,因為最后一個元素在連接后保持單一;并接受一個元素。關于該元素的索引,內部回圈迭代n次數以連接其n相鄰伙伴。外部if檢查退出條件,即whenn等于0。內部if-else只是格式化字串,使字串末尾沒有空格。
uj5u.com熱心網友回復:
串列推導式/生成器運算式的另一種形式解決方案:
[" ".join(myList[i:i n]) for i in range(len(myList)-n 1)]
產生,例如n=3:
['This is a', 'is a great', 'a great list']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/349039.html
下一篇:在F#中映射具有相同鍵的多個元素
