在多个赋值中将一个元素转换为int

时间:2015-05-21 23:15:49

标签: python

拥有以下代码:

queue_name, tasks_to_lease = self.configuration_service.get_value('tags')[self.task_tag].split('=')
tasks_to_lease = int(tasks_to_lease)

任何方法都可以在一行中完成吗?

2 个答案:

答案 0 :(得分:1)

这会将split()中的每个元素转换为奇数索引为int(),并将其他元素保留为原样:

>>> queue_name, tasks_to_lease = (int(v) if n else v for n,v in enumerate('a=3'.split('=')))
>>> queue_name
'a'
>>> tasks_to_lease
3

这会将split()中的每个元素转换为int(),其中每个字符都是一个数字(即,不会做负数)到>>> queue_name, tasks_to_lease = (int(v) if v.isdigit() else v for v in 'a=3'.split('=')) >>> queue_name 'a' >>> tasks_to_lease 3 ,并将其他字符保留为原样:

{{1}}

答案 1 :(得分:-1)

不推荐但可能:

 s = "foo 10"

a, b = map(lambda x: [lambda _: x, int][x.isdigit()](x) , s.split())

print(type(a), type(b))
print(a, b)

<class 'str'> <class 'int'>
foo 10