【问题标题】:How to separate out integer and string elements from a list into two different list? [duplicate]如何将列表中的整数和字符串元素分成两个不同的列表? [复制]
【发布时间】:2017-08-10 05:50:02
【问题描述】:

我想将一个列表中的整数和字符串元素分成两个不同的列表。 即

list1=[1,"Red",2,"Blue",3,"Pink",4,"White",5,"Yellow"] 

分离成

intList=[1,2,3,4,5]
strList=["Red","Blue","Pink","White","Yellow"]

我写了这段代码

import string
digits=string.digits
strings=string.letters + '_' + digits
list1=[1,"Red",2,"Blue",3,"Pink",4,"White",5,"Yellow"]
number=[]
string=[]
for item in list1:
    if item in digits:
        number.append(item)
    if item in strings:
        string.append(item)
print "List of String is:",string
print "List of Digits is:",number

但它给出了一个错误:“'in'需要字符串作为左操作数,而不是int”

如何将这个程序写成另一种方式?

【问题讨论】:

  • 我相信您希望isinstance(..., int) 检查某事是否为数字
  • 注意strings是一个字符串,通常是'1234567890'。您只能使用其他字符串对此进行包含测试因此错误消息会通知您类型不匹配,因为1 不是字符串。是的,使用isinstance()
  • .@dhke 谢谢...

标签: python python-2.7


【解决方案1】:

无论它们是否按任何顺序,您都可以使用功能将它们分开

def separate(array, type):
    return [n for n in array if isinstance(n, type)]

array = [ 1,"Red",2,"Blue",3,"Pink",4,"White",5,"Yellow"]
digits = separate(myList,int)
strings = array(myList,str)
print digits, strings

如需进一步帮助,请参阅 Python - Splitting List That Contains Strings and Integers

【讨论】:

  • 这是 python2,所以isinstance(x, (int, long)) 可能是个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
相关资源
最近更新 更多