首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用map函数对列表进行正方形

使用map函数对列表进行正方形
EN

Stack Overflow用户
提问于 2016-08-27 04:03:09
回答 7查看 13.5K关注 0票数 0

我有一张单子,我想把每一张都列成正方形。

这就是我所做的

代码语言:javascript
运行
复制
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))

但答案是

代码语言:javascript
运行
复制
[,1,,, ,4,,, ,9,,, ,1,6,,, ,2,5,,, ,3,6,]

而不是

代码语言:javascript
运行
复制
[1,4,9,16,25,36]
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-08-27 04:10:10

映射square函数,但不是映射str函数。您的squares_as_strings是整个列表中的一个字符串。

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-27 04:04:07

只要用简单的列表理解就可以解决。

代码语言:javascript
运行
复制
squares = [i*i for i in numbers]

或者,使用地图:

代码语言:javascript
运行
复制
squares = map(lambda x:x*x,numbers)
票数 5
EN

Stack Overflow用户

发布于 2016-08-27 04:08:59

问题就在以下几个方面:

代码语言:javascript
运行
复制
squares_as_strings = str(squares)
print(','.join(squares_as_strings))

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

现在,您是join-ing it,它在每个字符之间生成一个逗号。

你应该做的是:

代码语言:javascript
运行
复制
squares = map(str, map(square, numbers))

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

代码语言:javascript
运行
复制
def square(x):
    return x * x

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

print(','.join(squares))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39177332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档