我上面的答案已经回答了“u”部分——字符串是用 Unicode 编码的。关于是否有更好的方法从列表中的项目中提取前 6 个字母:
>>> a = ["abcdefgh", "012345678"]
>>> b = map(lambda n: n[0:5], a);
>>> for x in b:
print(x)
abcde
01234
因此,map
将函数 ( lambda n: n[0:5]
) 应用于 的每个元素a
并返回一个新列表,其中包含每个元素的函数结果。更准确地说,在 Python 3 中,它返回一个迭代器,因此该函数仅根据需要被调用多次(即,如果您的列表有 5000 个项目,但您只从结果b
中提取 10 个,则lambda n: n[0:5]
仅被调用 10 次)。在 Python2 中,您需要改为使用itertools.imap
。
>>> a = [1, 2, 3]
>>> def plusone(x):
print("called with {}".format(x))
return x + 1
>>> b = map(plusone, a)
>>> print("first item: {}".format(b.__next__()))
called with 1
first item: 2
当然,您可以通过调用将函数“急切地”应用于每个元素list(b)
,这将为您提供一个普通列表,其中包含在创建时应用于每个元素的函数。
>>> b = map(plusone, a)
>>> list(b)
called with 1
called with 2
called with 3
[2, 3, 4]