【问题标题】:Add index to new list if value of input list is numeric如果输入列表的值为数字,则将索引添加到新列表
【发布时间】:2021-04-12 19:49:51
【问题描述】:

我的输入列表是不同数据类型的列表 - 如果数据类型是数字(浮点或整数),我想将输入列表中的索引附加到我的新索引列表中。 我尝试了以下函数,它适用于 int/float 的第一次出现,但随后它返回每个后续浮点数的第一个浮点数的索引以及每个后续整数的第一个整数的索引。

types_list = [str, int, float, datetime.datetime, int, int]    
numeric_indices = [] 
for i in types_list: #now here I check, whether the type of the column is numeric
    if i== int or i==float: #if it is indeed of type integer or float which means it would be numeric
        print(types_list.index(i))
        numeric_indices.append(myindex)
```

【问题讨论】:

  • 您真的对迭代类型列表感兴趣吗?遍历数据列表并检查类型似乎更有意义。

标签: python list loops indexing


【解决方案1】:

您可以使用内置的enumerate() 方法在每个元素的索引旁边遍历types_list 的元素:

types_list = [str, int, float, datetime.datetime, int, int]    
numeric_indices = [] 
for index, i in enumerate(types_list):
    if i == int or i == float:
        print(index)
        numeric_indices.append(index)

【讨论】:

    【解决方案2】:

    类似

    def numeric(item):
        return (item == int) or (item == float)
    numeric_indices = [index for index, item in enumerate(types_list) if numeric(item)]
    

    对于您所说的而言,这将是非常惯用的python

    但是,我假设数据类型列表来自一些实际数据,这是您真正感兴趣的。类似

    def numeric(item):
        return (isinstance(item, int)) or (isinstance(item,  float))
    numeric_indices = [index for index, item in enumerate(types_list) if numeric(item)]
    

    会采用["a", 1, 1.2, datetime.datetime(2021, 4, 12, 15, 59, 35, 351557)] 之类的列表并生成[1,2],我认为这是您真正想要的

    编辑:建议使用str.isnumeric 的另一个答案,建议采用以下方法:

    def numeric(item):
        return str(item).isnumeric()
    
    numeric_indices = [index for index, item in enumerate(types_list) if numeric(item)]
    

    很可爱

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2017-05-07
      • 2021-09-25
      • 2015-05-10
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多