第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遍歷 Python List 及其 List 元素,在每個元素內(nèi)拆分字符串并寫出一個新列表

如何遍歷 Python List 及其 List 元素,在每個元素內(nèi)拆分字符串并寫出一個新列表

慕神8447489 2023-03-30 10:14:23
我有一個包含數(shù)百個元素的列表,其中許多元素本身就是一個列表。我希望“展平”并刪除列表中的重復(fù)數(shù)據(jù)并將其寫到文件中。應(yīng)寫入展平列表的離散元素在源數(shù)據(jù)中由雙反斜杠“\”分隔。例如,給定以下列表:alist = ["ZZ Ward\\Eric Bell"],["ZZ Ward"],["Sabine Kabongo\\Salif Keita\\Cat Stevens\\Trilok Gurtu\\Lindsey Buckingham"], ["John Mellencamp\\Cat Stevens"]我希望創(chuàng)建一個包含以下內(nèi)容的新列表:ZZ WardEric BellSabine KabongoSalif KeitaCat StevensTrilok GurtuLindsey BuckinghamJohn Mellencamp作為 Python 的新手,我進(jìn)行了大量搜索并嘗試了各種方法,但還沒有完全找到正確的解決方案。使用以下代碼:alist = ["ZZ Ward\\Eric Bell"],["ZZ Ward"],["Sabine Kabongo\\Salif Keita\\Cat Stevens\\Trilok Gurtu\\Lindsey Buckingham"], ["John Mellencamp\\Cat Stevens"]alist = list(filter(None, alist))alist.sort()for list in alist:  for element in list:  print(type(element), element.split("\\"))我已經(jīng)設(shè)法做到這一點(diǎn):<class 'str'> ['John Mellencamp', 'Cat Stevens']<class 'str'> ['Sabine Kabongo', 'Salif Keita', 'Cat Stevens', 'Trilok Gurtu', 'Lindsey Buckingham']<class 'str'> ['ZZ Ward']<class 'str'> ['ZZ Ward', 'Eric Bell']雖然重復(fù)數(shù)據(jù)刪除應(yīng)該相對簡單,但我如何將這個單獨(dú)的條目轉(zhuǎn)換為一個沒有元素本身的列表?
查看完整描述

3 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊

首先,用于sum展平您的列表。


>>> sum(alist, [])

['ZZ Ward\\Eric Bell', 'ZZ Ward', 'Sabine Kabongo\\Salif Keita\\Cat Stevens\\Trilok Gurtu\\Lindsey Buckingham', 'John Mellencamp\\Cat Stevens']

然后您可以將所有列表條目連接成一個具有相同分隔符的字符串:


>>> "\\".join(sum(alist, []))

'ZZ Ward\\Eric Bell\\ZZ Ward\\Sabine Kabongo\\Salif Keita\\Cat Stevens\\Trilok Gurtu\\Lindsey Buckingham\\John Mellencamp\\Cat Stevens'

之后,您可以使用定界符拆分它們:


>>> "\\".join(sum(alist, [])).split("\\")

['ZZ Ward', 'Eric Bell', 'ZZ Ward', 'Sabine Kabongo', 'Salif Keita', 'Cat Stevens', 'Trilok Gurtu', 'Lindsey Buckingham', 'John Mellencamp', 'Cat Stevens']

現(xiàn)在一旦你有了它,你就可以使用 set 構(gòu)造函數(shù)刪除重復(fù)項,如上一個答案中所建議的那樣:


>>> set("\\".join(sum(alist, [])).split("\\"))

{'Trilok Gurtu', 'Sabine Kabongo', 'Lindsey Buckingham', 'Salif Keita', 'ZZ Ward', 'Eric Bell', 'Cat Stevens', 'John Mellencamp'}

所以你看到你想要的所有操作都可以在一行中完成!


newlist = set("\\".join(sum(alist, [])).split("\\"))


查看完整回答
反對 回復(fù) 2023-03-30
?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個贊

您可以list comprehension嘗試set:


>>> new_list = [l3 for l1 in alist for l2 in l1 for l3 in l2.split('\\')]

>>> new_list

['ZZ Ward', 'Eric Bell', 'ZZ Ward', 'Sabine Kabongo', 'Salif Keita', 'Cat Stevens', 'Trilok Gurtu', 'Lindsey Buckingham', 'John Mellencamp', 'Cat Stevens']

>>> list(set(new_list))

['ZZ Ward', 'Salif Keita', 'Eric Bell', 'Lindsey Buckingham', 'Trilok Gurtu', 'Sabine Kabongo', 'John Mellencamp', 'Cat Stevens']

# If maintaining order is necessary:

>>> sorted(set(new_list), key=new_list.index)

['ZZ Ward', 'Eric Bell', 'Sabine Kabongo', 'Salif Keita', 'Cat Stevens', 'Trilok Gurtu', 'Lindsey Buckingham', 'John Mellencamp']

FWIW 基本上set comprehension可以,如果不需要訂單:


>>> {l3 for l1 in alist for l2 in l1 for l3 in l2.split('\\')}

{'Cat Stevens',

 'Eric Bell',

 'John Mellencamp',

 'Lindsey Buckingham',

 'Sabine Kabongo',

 'Salif Keita',

 'Trilok Gurtu',

 'ZZ Ward'}

在傳統(tǒng)版本中,這可以像這樣完成:


new_list = []

for l1 in alist:

    for l2 in l1:

        for l3 in l2.split('\\'):

            if l3 not in new_list:

                new_list.append(l3)

print(new_list)

輸出:


['ZZ Ward', 'Eric Bell', 'Sabine Kabongo', 'Salif Keita', 'Cat Stevens', 'Trilok Gurtu', 'Lindsey Buckingham', 'John Mellencamp']



查看完整回答
反對 回復(fù) 2023-03-30
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個贊

列表理解是執(zhí)行此操作的最佳方法,但如果您繼續(xù)沿著您開始的路徑前進(jìn),我認(rèn)為這將解決問題。


alist = ["ZZ Ward\\Eric Bell"],["ZZ Ward"],["Sabine Kabongo\\Salif Keita\\Cat Stevens\\Trilok Gurtu\\Lindsey Buckingham"], ["John Mellencamp\\Cat Stevens"]

alist = list(filter(None, alist))

alist.sort()

for list in alist:

  for element in list:

      for item in element.split("\\"):

          print(type(item), item) 


查看完整回答
反對 回復(fù) 2023-03-30
  • 3 回答
  • 0 關(guān)注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號