【问题标题】:How to split Python lists automatically based on type? [duplicate]如何根据类型自动拆分 Python 列表? [复制]
【发布时间】:2020-11-19 04:21:16
【问题描述】:

在开始之前,我已经尝试在其他地方寻找这个,但没有找到,所以请温柔。

我正在尝试使用简单的 for 循环根据数据类型将列表拆分为两个列表。

我想将字符串与其他所有内容分开。

这是我目前所拥有的:

list1 = [1, 2, 3, 4, "Missing1", 5, 6, 7, 8, 9, "Missing2", 10]

new_list = []
str_list = []
i = 0

for i in list1:
    if type(int):
        new_list.append(i)
    elif type(float):
        new_list.append(i)
    else:
        str_list.append(i)


print(new_list)
print(str_list)

但我的结果是这样的:

[1, 2, 3, 4, 'Missing1', 5, 6, 7, 8, 9, 'Missing2', 10]
[]

似乎 Python 将这些字符串视为整数——我该如何更改?

【问题讨论】:

标签: python


【解决方案1】:

您的代码中有一些错误。这里是固定的。

new_list = []
str_list = []

for i in list1:
    if type(i) == int:
        new_list.append(i)
    elif type(i) == float:
        new_list.append(i)
    else:
        str_list.append(i)

这是一个更通用的拆分列表代码:

from collections import defaultdict

lists = defaultdict(list)
for i in list1:
   lists[type(x)].append(i)

现在,lists[int]lists[float]lists[str] 都将提供自己类型的列表。

【讨论】:

  • 谢谢!这是有道理的,它应该单独查看每个索引。另外,您的替代方法非常干净!
猜你喜欢
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2019-03-06
  • 2014-10-09
  • 2019-01-17
相关资源
最近更新 更多