这听起来很简单,但我在互联网上找不到任何关于如何做到这一点。我已经阅读了文档,但这对我没有帮助。
我必须从用户那里获得输入才能创建列表。这就是我现在正在使用的。
t = raw_input("Enter list items: ")
l = map(str,t.split())
但这会将每个元素转换为字符串。如果我在map函数中使用int,那么每个元素都将转换为int。
我该怎么办?我还缺少其他任何功能吗?
答案 0 :(得分:1)
您可以使用list comprehension仅对包含数字字符的字符串调用int
(由str.isdigit
确定):
t = raw_input("Enter list items: ")
l = [int(x) if x.isdigit() else x for x in t.split()]
演示:
>>> t = raw_input("Enter list items: ")
Enter list items: 1 hello 2 world
>>> l = [int(x) if x.isdigit() else x for x in t.split()]
>>> l
[1, 'hello', 2, 'world']
>>>
答案 1 :(得分:1)
使用try / except。尝试使它成为一个int。如果失败,请将其保留为字符串。
def operation(str):
try:
val = int(str)
except ValueError:
val = str
return val
t = raw_input("Enter list items: ")
l = map(operation,t.split())
print l
你可以使用列表理解而不是映射更多" pythonic"代码:
t = raw_input("Enter list items: ")
l = [operation(x) for x in t.split()]
编辑:我喜欢iCodez更好...... isDigit测试比尝试更好。