我有一個很大的清單,看起來像:
a=["cos","3","4","5","cos1","4","5","cos2","1"]
我想創建一個類似于以下串列的串列:
a=[["cos","3","4","5"],["cos1","4","5"],["cos2","1"]]
我試過
sub=[]
for i,y in enumerate(a):
if "cos" in y:
sub.append([y])
continue
它沒有用。你可以幫幫我嗎?
uj5u.com熱心網友回復:
你接近得到你想要的。"cos"就目前而言,如果是您當前正在查看的字串的一部分,您只能創建一個新的子串列。什么時候"cos" 不在那個字串中呢?
現在,您只需忽略此案例。但是,您希望將此元素添加到您之前附加到 的子串列中sub。您可以訪問子串列,sub[-1]因為它是 的最后一個元素sub,然后附加到它。
sub=[]
for y in a:
if "cos" in y:
sub.append([y])
else:
sub[-1].append(y)
這使
sub = [['cos', '3', '4', '5'], ['cos1', '4', '5'], ['cos2', '1']]
我洗掉了不必要的enumerate()和continue。
這假設acontains的第一個元素"cos",因此sub[-1]在執行該行時將始終存在。在不是這種情況時處理錯誤留給讀者作為練習。
uj5u.com熱心網友回復:
注意 的發生'cos'。如果遇到數字,只需將它們添加到臨時串列中即可。當您遇到 name 時'cos',您應該將臨時串列(您的子串列)添加到結果串列中,同時創建一個以專案 has 開頭的新臨時串列'cos'。
但是在第一次迭代中有一個例外,您不想在結果中添加空串列(因為您遇到'cos'但臨時為空)。因此,if temp:對于那些。
如果您不想要這個額外的if 條件,并且如果您的串列以開頭,則'cos'可以temp = [a[0]]在開頭使用,然后遍歷其余專案。
a = ["cos", "3", "4", "5", "cos1", "4", "5", "cos2", "1"]
res = []
temp = []
for item in a:
if not item.startswith('cos'):
temp.append(item)
else:
if temp:
res.append(temp)
temp = [item]
if temp:
res.append(temp)
print(res)
輸出:
[['cos', '3', '4', '5'], ['cos1', '4', '5'], ['cos2', '1']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375914.html
下一篇:只有墻壁可碰撞;蟒蛇文字游戲
