我正在嘗試join()在帶有 if 陳述句的嵌套串列中使用。如果滿足條件,我想合并[1:-3]. 每次join()函式不加入索引時。
輸入
a = [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd', 'e','f','g'], ['a', 'b', 'c', 'd']]
預期產出
[['a', 'b', 'c', 'd'], ['a', 'b c d', 'e','f','g'], ['a', 'b', 'c', 'd']]
我試過的:
a = [' '.join(str(inner_list)) for inner_list in a for i in inner_list if len(inner_list) >= 6 ]
我知道 for 回圈是正確的,因為以下代碼生成 true fora[1][0]并遍歷a[][]. 據我了解,回圈正在迭代正確的部分,但不會join()從索引[1][1]到[1][3]. 這是我非常困惑的地方。
索引
a = [print("true") for inner_list in a for i in inner_list if len(inner_list) >= 6 ]
uj5u.com熱心網友回復:
您需要在回圈中對內部串列進行切片,但如果剩余的內部串列小于 6 個專案,則還要按原樣傳遞它們。這是一個例子:
lst = [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd', 'e', 'f', 'g'], ['a', 'b', 'c', 'd']]
new_lst = [[l[0:1] [' '.join(l[1:-3])] l[-3:]] if len(l) >= 6 else l for l in lst]
print(new_lst)
# Output
# [['a', 'b', 'c', 'd'], [['a', 'b c d', 'e', 'f', 'g']], ['a', 'b', 'c', 'd']]
join()將串列作為引數而不是字串,并盡量避免使用內置型別,list如變數名。
uj5u.com熱心網友回復:
for inner_list in list_:
for i in inner_list:
if len(inner_list) >= 6:
print("".join((inner_list)))
輸出:
a b c d e f g
a b c d e f g
a b c d e f g
a b c d e f g
a b c d e f g
a b c d e f g
a b c d e f g
我把它轉換成它實際做的,只是我沒有把它放在一個串列中。如果您可以指定您正在尋找的輸出。同樣在您的代碼中,您應該洗掉 str(inner_list) 因為我認為它沒有按照您的意圖執行。
請也分享預期的輸出,所以我回答得更好。
您的代碼已更新
list = [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd', 'e','f','g'], ['a', 'b', 'c', 'd']]
list = [' '.join((inner_list)) for inner_list in list for i in inner_list if len(inner_list) >= 6 ]
輸出串列:
['a b c d e f g',
'a b c d e f g',
'a b c d e f g',
'a b c d e f g',
'a b c d e f g',
'a b c d e f g',
'a b c d e f g']
如果您也想使用 [1:-3] 索引
list = [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd', 'e','f','g'], ['a', 'b', 'c', 'd']]
list = [' '.join((inner_list[1:-3])) for inner_list in list for i in inner_list if len(inner_list) >= 6 ]
輸出串列:
['b c d',
'b c d',
'b c d',
'b c d',
'b c d',
'b c d',
'b c d']
ps:也盡量不要使用默認關鍵字作為變數名,如串列
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510793.html
