Python中列表元素转为数字

黑夜愁客 2010-08-01 09:07:27
有一个数字字符的列表:
numbers = ['1', '5', '10', '8'];

想要把每个元素转换为数字:
numbers = [1, 5, 10, 8];

用一个循环来解决:
new_numbers = [];
for n in numbers:
new_numbers.append(int(n));
numbers = new_numbers;

有没有更简单的语句可以做到呢?1.
numbers = [ int(x) for x in numbers ]

2. Python2.x,可以使用map函数
numbers = map(int, numbers)

3.如果是3.x,map返回的是map对象,当然也可以转换为List:
umbers = list(map(int, numbers))

4. 还有一种比较复杂点:
for i, v in enumerate(numbers): numbers[i] = int(v)

还有其他方式吗,请留言。
原文出自:Code之行人,链接:http://www.leyond.info/programdev/python/cast-element-of-list-into-number-in-python/
...全文
3784 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑夜愁客 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]

搞那么多方式干什么。又不是考试。实际应用中我们只有最自然最简单的方式去解决问题。Python的教条就是there is only one way to do it。
[/Quote]受教了
黑夜愁客 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 thy38 的回复:]

说来说去,其实就是方法1最好,是Python2.5之后用来取代filter和map的。

LZ是不是刚刚从C系语法转过来的?看到行末还留有分号。

Python就是要解放程序员,LZ要想玩新奇特,最好学Ruby。

最后,要想再凑出个方法也行:
Python code
numbers = ['1', '5', '10', '8']
numbers = eval('['+(','.……
[/Quote]
的确c,写的比较多点。
iambic 2010-08-02
  • 打赏
  • 举报
回复
搞那么多方式干什么。又不是考试。实际应用中我们只有最自然最简单的方式去解决问题。Python的教条就是there is only one way to do it。
iambic 2010-08-02
  • 打赏
  • 举报
回复
list comprehension在简单情况显得很繁琐。我是比较习惯用map。而且自lisp以下,很多语言里都有map,几乎成了一个语言习惯。
thy38 2010-08-02
  • 打赏
  • 举报
回复
说来说去,其实就是方法1最好,是Python2.5之后用来取代filter和map的。

LZ是不是刚刚从C系语法转过来的?看到行末还留有分号。

Python就是要解放程序员,LZ要想玩新奇特,最好学Ruby。

最后,要想再凑出个方法也行:
numbers = ['1', '5', '10', '8']
numbers = eval('['+(','.join(numbers))+']')
print numbers

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧