字符串列表打印内存位置的映射函数

时间:2015-12-04 08:45:05

标签: python list python-3.x strip map-function

对于我的项目,我做了一些事情并从命令行输出中提取特定行,然后将其插入列表中。从那里我将列表导出到训练文件中,以便稍后使用学习算法。问题是当我从命令行中提取信息时,它会拉

"Number\n"

当我将列表附加到文本文件时,它不会打印

 Number, Number, Number

而是正在打印

Number
Number
Number

它正在应用换行符,这对我来说几乎没用。通过一些谷歌搜索我发现这个链接 Strip all the elements of a string list 解释我认为正是我需要解决的问题。它删除换行符并将列表转换为我以后需要的内容。除了任何原因它不起作用。

这是我的代码

def exportlist(self):  
    file = open('Trainingfile.txt','a+')
    # i pass it into a variable since i ran into some odd errors if i try 
    # to apply the map function to self.vectorlist
    my_list= self.vectorlist      
    print(my_list)               # prints [ 'number\n', 'number\n'......]
    # WHAT THE ABOVE LINK AND OTHERS SAID SHOULD WORK
    strip_list= map(str.rstrip('\n'), my_list)  
    print(strip_list)            # prints "map object at 0x00000002C...."
    self.vectorlist = strip_list # test code 
    print(self.vectorlist)       # prints same as strip_list
    file.close()

如果我使用chr.split而不是strip,我会得到类似的结果。 打印my_list会打印格式不正确的列表。 打印应该是格式正确的列表的strip_list,打印我认为是内存位置“0x0000000002C ....”我在网上发现的一切都告诉我它不应该打印这个。它应该打印格式正确的列表。有谁知道为什么会这样?每次我使用map函数时都会发生这种情况。我已经尝试了多种方法从我的列表中删除“\ n”但它总是返回相同的东西。

2 个答案:

答案 0 :(得分:2)

您需要将结果转换为列表:

strip_list = list(map(str.rstrip('\n'), my_list))

在Python 3 map()中返回一个地图对象。这是一个迭代器。您可以使用list()围绕它转换为列表。

答案 1 :(得分:0)

来自文档...

Help on class map in module builtins:

class map(object)
 |  map(func, *iterables) --> map object
 |  
 |  Make an iterator that computes the function using arguments from
 |  each of the iterables.  Stops when the shortest iterable is exhausted.

class list(object)
 |  list() -> new empty list
 |  list(iterable) -> new list initialized from iterable's items

因此,您使用列表调用来包装迭代器以获取列表,例如:

list(map(f, list))