列表理解输出是 None
List comprehension output is None
我是 python 的新手,我想尝试使用列表理解,但得到的结果是 None。
print
wordlist = ['cat', 'dog', 'rabbit']
letterlist = []
letterlist = [letterlist.append(letter) for word in wordlist for letter in word if letter not in letterlist]
print letterlist
# output i get: [None, None, None, None, None, None, None, None, None]
# expected output: ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']
这是为什么?它似乎以某种方式起作用,因为我得到了预期的结果数 (9),但所有结果都是 None.
list.append
returns None
。您需要将列表理解中的表达式调整为 return 个字母。
wordlist = ['cat', 'dog', 'rabbit']
letterset = set()
letterlist = [(letterset.add(letter), letter)[1]
for word in wordlist
for letter in word
if letter not in letterset]
print letterlist
list.append(element)
没有 return 任何东西——它向列表附加一个元素 in-place.
您的代码可以重写为:
wordlist = ['cat', 'dog', 'rabbit']
letterlist = [letter for word in wordlist for letter in word]
letterlist = list(set(letterlist))
print letterlist
…如果你真的想使用列表理解,或者:
wordlist = ['cat', 'dog', 'rabbit']
letterset = set()
for word in wordlist:
letterset.update(word)
print letterset
… 这可以说更清楚了。这两者都假定顺序无关紧要。如果是这样,您可以使用 OrderedDict:
from collections import OrderedDict
letterlist = list(OrderedDict.fromkeys("".join(wordlist)).keys())
print letterlist
如果顺序无关紧要,请执行以下操作:
resultlist = list({i for word in wordlist for i in word})
我是 python 的新手,我想尝试使用列表理解,但得到的结果是 None。
print
wordlist = ['cat', 'dog', 'rabbit']
letterlist = []
letterlist = [letterlist.append(letter) for word in wordlist for letter in word if letter not in letterlist]
print letterlist
# output i get: [None, None, None, None, None, None, None, None, None]
# expected output: ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']
这是为什么?它似乎以某种方式起作用,因为我得到了预期的结果数 (9),但所有结果都是 None.
list.append
returns None
。您需要将列表理解中的表达式调整为 return 个字母。
wordlist = ['cat', 'dog', 'rabbit']
letterset = set()
letterlist = [(letterset.add(letter), letter)[1]
for word in wordlist
for letter in word
if letter not in letterset]
print letterlist
list.append(element)
没有 return 任何东西——它向列表附加一个元素 in-place.
您的代码可以重写为:
wordlist = ['cat', 'dog', 'rabbit']
letterlist = [letter for word in wordlist for letter in word]
letterlist = list(set(letterlist))
print letterlist
…如果你真的想使用列表理解,或者:
wordlist = ['cat', 'dog', 'rabbit']
letterset = set()
for word in wordlist:
letterset.update(word)
print letterset
… 这可以说更清楚了。这两者都假定顺序无关紧要。如果是这样,您可以使用 OrderedDict:
from collections import OrderedDict
letterlist = list(OrderedDict.fromkeys("".join(wordlist)).keys())
print letterlist
如果顺序无关紧要,请执行以下操作:
resultlist = list({i for word in wordlist for i in word})