【问题标题】:Why does my loop not recognize any data values?为什么我的循环不能识别任何数据值?
【发布时间】:2017-11-30 16:36:19
【问题描述】:

我正在学习数据结构和算法,并决定启动一个快速代码来将列表分成数据类型。我的目标是创建一个循环来检查列表中的每个值,然后使用 if 语句来确定它是 int、bool、string 还是 float。我不知道为什么,但是条件语句的某些东西是关闭的,因为它运行了我最后的“else”语句。

myList = ['test',3,True,'chicken',False,95,33/4,.02,'rabbit',False]
myInts = []
myBools = []
myStrings = []
myFloats = []

for a in myList:
  if a == int:
    myInts.append(a)
  elif a == bool:
    myBools.append(a)
  elif a == str:
    myStrings.append(a)
  else:
    myFloats.append(a)

print('Ints:', myInts)
print('Bools:',myBools)
print('Strings:',myStrings)
print('Floats:',myFloats)

【问题讨论】:

标签: python python-3.x conditional


【解决方案1】:

您需要使用type(x) 来确定类型。 但你真正想做的是使用:isinstance(a, int)。您可以将第二个参数更改为任何类型,例如 str、bool 等。

【讨论】:

  • 使用 isinstance(a,int) 还是使用 type(a) == int 更好?
  • 你可以,pythonic的方式是使用isinstance()
【解决方案2】:

您可以使用快捷方式,也可以使用isinstance 方法,将分隔列表中的每个类型作为

myStrings=[s for s in myList if isinstance(s,str)]

并对其他类型执行相同的操作。

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多