带有列表和连接功能的Python问题

时间:2016-11-27 23:41:37

标签: python list for-loop queue

如何使用for循环将两位数整数附加到列表中而不拆分它们。例如,我给计算机10,14,13,15,我得到像1,0,1,4,1,3,1,5这样的东西。我试图解决这个问题,但我最后遇到了一个新问题,即类型错误:序列项0:期望字符串,找到int

def GetNumbers(List):
    q=[]
    Numberlist = []

    for i in List:
        if i.isdigit():
            q.append(int(i))
        else:
            Numberlist.append(''.join(q[:]))
            del q[:]

    return Numberlist

1 个答案:

答案 0 :(得分:0)

理想的方法是将str.split()函数用作:

>>> my_num_string = "10,14,13,15"
>>> my_num_string.split(',')
['10', '14', '13', '15']

但是,既然你提到你不能使用split(),你可以使用regex表达式从字符串中提取数字:

>>> import re
>>> re.findall('\d+', my_num_string)
['10', '14', '13', '15']

另外,如果你不想使用任何花哨的方法,你可以用简单的for循环来实现它:

num_str, num_list = '', []
#  ^ Needed for storing the state of number while iterating over
#    the string character by character

for c in my_num_string:
    if c.isdigit():
       num_str += c
    else:
       num_list.append(num_str)
       num_str = ''

num_list中的数字将采用str的形式。要将它们转换为int,您可以明确地将它们转换为:

num_list = [int(i) for i in num_list]  # OR, list(map(int, num_list))