列表理解不起作用

时间:2017-04-01 02:30:44

标签: python for-loop list-comprehension

我想将一个列表中的唯一项目放到另一个列表中,即消除重复项目。当我通过较长的方法进行操作时,我可以看到它。例如。

>>>new_list = []
>>>a = ['It', 'is', 'the', 'east', 'and', 'Juliet', 'is', 'the', 'sun']

>>> for word in a:
    if word not in a:
        new_list.append(word)

>>> new_list
['It', 'is', 'the', 'east', 'and', 'Juliet', 'sun']

但是当尝试使用列表理解在一行中完成此操作时,每次迭代都返回值“无”

>>> new_list = []
>>> a = ['It', 'is', 'the', 'east', 'and', 'Juliet', 'is', 'the', 'sun']
>>> new_list = [new_list.append(word) for word in a if word not in new_list]

有人可以帮助理解列表理解中出错的地方。

先谢谢 Umesh制作

2 个答案:

答案 0 :(得分:1)

  

列表推导提供了创建列表的简明方法。共同   应用程序将创建新列表,其中每个元素都是结果   一些操作应用于另一个序列的每个成员或   可迭代的,或创建满足a的元素的子序列   某种条件。

也许你可以试试这个:

>>> new_list = []
>>> a = ['It', 'is', 'the', 'east', 'and', 'Juliet', 'is', 'the', 'sun']
>>> unused=[new_list.append(word) for word in a if word not in new_list]
>>> new_list
['It', 'is', 'the', 'east', 'and', 'Juliet', 'sun']
>>> unused
[None, None, None, None, None, None, None]

<强>注意:

如果插入的操作成功,

append()将返回None

另一种方法是,您可以尝试使用set删除重复的项目:

>>> a = ['It', 'is', 'the', 'east', 'and', 'Juliet', 'is', 'the', 'sun']
>>> list(set(a))
['and', 'sun', 'is', 'It', 'the', 'east', 'Juliet']

答案 1 :(得分:0)

如果您想要一个唯一的单词列表,可以使用Function New-RandomFile_Fast { Param( $Path = (Resolve-Path '.').Path, $FileSize = 1kb, $FileName = [guid]::NewGuid().Guid + '.txt' ) $Chunk = { [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid -Replace "-" } $Chunks = [math]::Ceiling($FileSize/1kb) $ChunkString = $Chunk.Invoke() [io.file]::WriteAllText("$Path\$FileName","$(-Join (1..($Chunks)).foreach({ $ChunkString }))") Write-Warning "New-RandomFile: $Path\$FileName" }

set()

如果订单很重要,请尝试:

list(set(a))
# returns:
# ['It', 'is', 'east', 'and', 'the', 'sun', 'Juliet']