如何创建一个以字符串和整数作为元素的列表?

时间:2014-12-15 00:43:34

标签: python string input type-conversion

这听起来很简单,但我在互联网上找不到任何关于如何做到这一点。我已经阅读了文档,但这对我没有帮助。

我必须从用户那里获得输入才能创建列表。这就是我现在正在使用的。

t = raw_input("Enter list items: ")
l = map(str,t.split())

但这会将每个元素转换为字符串。如果我在map函数中使用int,那么每个元素都将转换为int。

我该怎么办?我还缺少其他任何功能吗?

2 个答案:

答案 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测试比尝试更好。