我有一个列表,我想对每个列表进行平方。
这就是我所做的
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]
答案 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
个对象。