python 这句话是什么意思

xie_xz 2012-05-07 01:34:57
目的:将line="linux,python,12" 转化为列表:['linux','python',12]做法是这样的但我看不懂第四句

>>>line="linux,python,12"

>>> field_types=[str,str,int]

>>>raw_fields=line.split(',')

>>>fields=[ty(val) for ty,val in zip(field_types,raw_fields)] ##这句话是怎么做到转化的?val是个tuples吧,ty(val) for ty是什么意思跟平时写的li=[tmp for i in 。。。。]形式差好多,查api应用什么关键词?
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2012-05-07
  • 打赏
  • 举报
回复
就是干下面的事(print除外):

>>> lst = zip(field_types, raw_fields)
>>> lst
[(<type 'str'>, 'linux'), (<type 'str'>, 'python'), (<type 'int'>, '12')]
>>> for ty, val in lst:
print 'ty: %s, val: %s' % (ty, val)
fields.append(ty(val))


ty: <type 'str'>, val: linux
ty: <type 'str'>, val: python
ty: <type 'int'>, val: 12
>>> fields
['linux', 'python', 12]
xie_xz 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

fields=[ty(val) for (ty,val) in zip(field_types,raw_fields)]
进行类型转换,主要将原字符串型的整数转换成int型
[/Quote]理解,加个括号就好理解多了。谢谢
xie_xz 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

该问题的核心是要理解“zip(field_types,raw_fields)”
Python code

>>> zip(field_types,raw_fields)
[(<type 'str'>, 'linux'), (<type 'str'>, 'python'), (<type 'int'>, '12')]
>>>


然后的"for ty, val in .."是对这个列表的遍……
[/Quote]
谢谢一说到类型转换的就明白了,我一直理解为c语言的逗号表达式所以。加个括号写成。
fields=[ty(val) for (ty,val) in zip(field_types,raw_fields)]
tim_spac_126 2012-05-07
  • 打赏
  • 举报
回复
该问题的核心是要理解“zip(field_types,raw_fields)”

>>> zip(field_types,raw_fields)
[(<type 'str'>, 'linux'), (<type 'str'>, 'python'), (<type 'int'>, '12')]
>>>

然后的"for ty, val in .."是对这个列表的遍历,循环的每次得到的是 类型-值 元组
再之后是ty(val)将val按ty指定的类型进行转换,相当于str('linux'), str('python'), int('12')
bugs2k 2012-05-07
  • 打赏
  • 举报
回复
fields=[ty(val) for (ty,val) in zip(field_types,raw_fields)]
进行类型转换,主要将原字符串型的整数转换成int型

37,719

社区成员

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

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