Python 如何将字符串和整数分隔到列表中

Python 如何将字符串和整数分隔到列表中,python,string,list,python-3.x,int,Python,String,List,Python 3.x,Int,我需要分开这个字符串: s = "I have 10 cars" 下面的列表: ['I','h','a','v','e',10,'c','a','r','s'] 数字不应该分开。此外,数字应作为整数输入,而不包含这些“”请尝试将其作为字符串返回 list(str("I have 10 cars")) 对于较大的字符串,这里的其他答案效率极低 您不应该不必要地使用append,因为使用较大的字符串可能会非常昂贵。以我的方式,每次在列表中找到所需的新元素时,都不会调整列表的大小。为了提高效率,

我需要分开这个字符串:

s = "I have 10 cars"
下面的列表:

['I','h','a','v','e',10,'c','a','r','s']

数字不应该分开。此外,数字应作为整数输入,而不包含这些“”

请尝试将其作为字符串返回

list(str("I have 10 cars"))
对于较大的字符串,这里的其他答案效率极低

您不应该不必要地使用append,因为使用较大的字符串可能会非常昂贵。以我的方式,每次在列表中找到所需的新元素时,都不会调整列表的大小。为了提高效率,您可以这样做:

s = "I have 10 cars"

def seperateWithInts( l ):
    for s in l.split():
        if s.isdigit():
            yield s
        else:
            for c in s:
                yield c

s2 = [i for i in seperateWithInts(s)]

这里有一个使用列表理解的一行程序,这可能不是您的最佳选择

s = "I have 10 cars"
print [item for sublist in [[x] if x.isdigit() else list(x) for x in s.split(" ")] for item in sublist]
#Output
['I', 'h', 'a', 'v', 'e', '10', 'c', 'a', 'r', 's']

基本上,您可以将字符串拆分为包含字符和数字的列表,然后将列表展平,所有这些都是列表理解的一次飞跃。

太棒了!祝你好运!问一个描述性的问题,问你到目前为止所做的尝试和研究,如果你被绊倒了,为什么我会被否决?这是行不通的。试着自己运行你的答案是错的。它产生['I'、'h'、'a'、'v'、'e'、'1'、'0'、'c'、'a'、'r'、's'],也就是说,它也拆分数字。另外,不需要使用str。append和+=对于list来说非常昂贵,因为您需要每隔一天调整它的大小time@Brianappend将创建列表append和extend or+=的列表,如果有机会,应该避免使用它们。这两种操作都会导致Python必须调整内存中数组的大小,因此效率不高。您的方法可以工作,但对于较长的字符串,这将是一个昂贵的过程operation@Brian符合事实的对于输入中的项,同意您的=[]拆分“”:尝试:res.appendintitem,但不包括:res+=listitem printres
s = "I have 10 cars"
print [item for sublist in [[x] if x.isdigit() else list(x) for x in s.split(" ")] for item in sublist]
#Output
['I', 'h', 'a', 'v', 'e', '10', 'c', 'a', 'r', 's']