簡體   English   中英

如何在列表中拆分索引字符串並存儲在同一列表中?

[英]How to split string of index in list and store within same list?

假設我有一個這樣的列表:

lst = ['apple orange', 'banana', 'grape']

我知道list[0].split()只會返回一個包含['apple', 'orange']的列表['apple', 'orange']但是我想通過簡單的sol'n實現以下目標:

lst = ['apple', 'orange', 'banana', 'grape']


范例2:

假設清單為:

lst = ['apple orange', 'banana', 'grape', 'foo fi']

我只想要

lst = ['apple', 'orange', 'banana', 'grape', 'foo fi']

如何在一站式解決方案中做到這一點?

(如果某些上下文有幫助,請假設它不會一直位於索引位置0)

您可以使用列表解析來模擬拆包:

lst = ['apple orange', 'banana', 'grape']
new_lst = [w for s in lst for w in s.split()]
print(new_lst)
# ['apple', 'orange', 'banana', 'grape']

它等效於以下更簡潔但無效的版本:

new_lst = [*s.split() for s in lst]

不幸的是,列表推導中不允許這樣解壓縮,這就是為什么我們必須使用上述解決方法的原因。

編輯的問題解決方案:

index = 1 # or whatever
lst = ['banana', 'apple orange', 'grape']
lst[index:index + 1] = lst[index].split()
print(lst)

以上工作就地進行; 如果您想創建一個副本,則可以使用上面的副本,但可以創建一個副本,或者:

index = 1 # or whatever
lst = ['banana', 'apple orange', 'grape']
new_lst = lst[:index] + lst[index].split() + lst[index + 1:]
print(new_lst)

對於第二個問題,您可以使用slicing

def split_at(l, i):
    return l[:i] + l[i].split() + l[i+1:]

例如:

>>> split_at(l,0)
['apple', 'orange', 'banana', 'grape', 'foo fi']

>>> split_at(l,3)
['apple orange', 'banana', 'grape', 'foo', 'fi']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM