使用map函数对列表进行平方

时间:2016-08-27 04:03:10

标签: python string list

我有一个列表,我想对每个列表进行平方。

这就是我所做的

def square(x):
    return x*x

numbers = [1,2,3,4,5,6]
squares = map(square, numbers)


squares_as_strings = str(squares)


print(','.join(squares_as_strings))

但答案是这个

[,1,,, ,4,,, ,9,,, ,1,6,,, ,2,5,,, ,3,6,]

而不是

[1,4,9,16,25,36]

6 个答案:

答案 0 :(得分:2)

只需通过简单的列表理解即可解决。

squares = [i*i for i in numbers]

或者,使用map:

squares = map(lambda x:x*x,numbers)

答案 1 :(得分:1)

问题在于以下几点:

squares_as_strings = str(squares)
print(','.join(squares_as_strings))

str应用于squares数组不会使每个数字成为字符串。 相反,它给出了这个 - '[1, 2, 3]',它是一个字符串,而不是你想要的字符串数组。

现在,你是join - 它会导致每个角色之间出现逗号。

你应该这样做:

squares = map(str, map(square, numbers))

这会使squares数组的每个元素成为一个字符串。然后使用你的加入。

def square(x):
    return x * x

nums = [1, 2, 3]
squares = map(str, map(square, nums))

print(','.join(squares))

答案 2 :(得分:1)

def square(x):
        return x*x

numbers = [1,2,3,4,5,6]
squares = map(square, numbers)

print(str(squares)) #str() in not needed

答案 3 :(得分:1)

您映射square功能,但您没有映射str功能。您的squares_as_strings是整个列表中的一个字符串。

str(squares)更改为map(str, squares)

答案 4 :(得分:1)

这种情况正在发生,因为您在字符串上调用了join而在list上调用了map。最终,您没有正确处理squares的结果。

如果您使用的是Python 2,那么您的地图会为您提供一个列表,因此只需打印list即可获得预期结果。

如果您使用的是Python 3,实际上您将拥有一个地图对象,因此您需要在其上调用list(squares) ,以获取地图结果列表:

Images: {
    PUSH_ID_1: {
        url: "https://cdn.filestackcontent.com/o0ze07FlQjabT9nuteaE",
        tags: {
            "tag1324": true,
            "tag4321": true
        }
    },
    PUSH_ID_2: {
        url: "https://cdn.filestackcontent.com/shjkds7e1ydhiu",
        tags: {
            "tag1324": true,
            "tag5678": true
        }
    }
},
TagsToImages: {
    "tag1324": {
        PUSH_ID_1: true,
        PUSH_ID_2: true
    },
    "tag4321": {
        PUSH_ID_1: true
    }
    "tag5678": {
        PUSH_ID_2: true
    }
}

答案 5 :(得分:0)

如果您想使用map功能,可以使用:

squares = list(map(square, numbers))

map函数将返回map个对象。