簡體   English   中英

如何將FOR循環值附加到列表中

[英]how to append a FOR loop value into a list

您好我正在嘗試將值附加到列表中,雖然這里有各種各樣的示例,但這是不同的我使用FOR循環將所有值都記錄到列表中,如果在“每個”中找到正確的名稱“我想將”each“附加到一個新列表中。 這是一個例子

for each in lines:
            if names in each:
                print(names)
                print(each)
                if len(newnames)<=3:                   
                    newnames.append((each))

                elif len(newnames)>3:                
                    newnames = newnames[:2]
            print(newnames) 

線條看起來像這樣

['alex | 7','jake | 10','jake | 2','jake | 5','josh | 3','josh | 5','josh | 7','megan | 6',' megan | 8','megan | 9']

名稱只是一個列表,每個名稱只有一個副本。 希望這是足夠的信息,讓你能夠找到答案,因為它讓我完全難過。

干杯。

如果只需要行中的名稱並使用字符串split()方法從行項目中拆分名稱。

例如

>>> names = set()
>>> l = ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
>>> for i in l:
...     names.add(i.split("|")[0])
... 
>>> print names
set(['josh', 'jake', 'alex', 'megan'])
>>> 

Pythonic方式:

>>> l = ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
>>> set([i.split("|")[0] for i in l])
set(['josh', 'jake', 'alex', 'megan'])
>>> 

我不確定我完全理解你的問題,但是如果我這樣做了,那么你想要做的是解析你的行列表中的字符串,然后檢查你的名字列表中是否出現了解析的名字。 如果是這樣,您希望將其附加到新列表。

如果您希望列表是唯一的,只需將其替換為set(和append with add),或者將result = set(result)到程序的末尾。

無論如何,怎么樣:

result = []
for each in lines:
    name = each.split('|')[0]
    if name in names:
        result.append(name)
print result

根據您的輸入列表,這將給出結果:

['alex', 'jake', 'jake', 'jake', 'josh', 'josh', 'josh', 'megan', 'megan', 'megan']

如果所有這些名字都在你的names列表。 如果沒有,它只會附加該列表中的名稱。

我同意Vivek,我認為:

    if names in each:

應該

    if each in names:

它似乎也是將列表與列表元素進行比較。 通常你執行相反的比較。 您也不需要將值附加為元組,只需附加到列表即可。 看這個例子:

    lines=['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']
    names=[l.split('|')[0] for l in ['alex|7', 'jake|10', 'jake|2', 'jake|5', 'josh|3', 'josh|5', 'josh|7', 'megan|6', 'megan|8', 'megan|9']][:-4]
    newnames=[]

    for each in [l.split('|')[0] for l in lines]:
        if each in names:
            print(names)
            print(each)
            if len(newnames)<=3:   
                newnames.append(each)

            elif len(newnames)>3:
                newnames = newnames[:2]
                print(newnames) 

暫無
暫無

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

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