[英]Make list of list from specific str
我有一個很大的清單,看起來像:
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
它沒有用。 你可以幫幫我嗎?
你已經接近得到你想要的了。 就目前而言,如果"cos"
是您當前正在查看的字符串的一部分,您只會創建一個新的子列表。 當"cos"
不在那個字符串中時怎么辦?
現在,您只需忽略此案。 但是,您希望將此元素添加到您之前附加到sub
的子列表中。 您可以以sub[-1]
的形式訪問子列表,因為它是sub
的最后一個元素,然后是 append 。
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
。
這假定a
的第一個元素包含"cos"
,因此sub[-1]
在執行該行時將始終存在。 在不是這種情況下處理錯誤留給讀者作為練習。
注意'cos'
的出現。 如果遇到數字,只需將它們添加到臨時列表中即可。 當您遇到名稱'cos'
時,您應該將臨時列表(您的子列表)添加到結果列表中另外創建一個以項目開頭的新臨時列表 has 'cos'
。
但是在第一次迭代中有一個例外,你不想在結果中添加空列表(因為你遇到'cos'
但臨時是空的)。 所以if temp:
是為了那個。
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)
output:
[['cos', '3', '4', '5'], ['cos1', '4', '5'], ['cos2', '1']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.