【问题标题】:Removing the first item in a list using a for loop使用 for 循环删除列表中的第一项
【发布时间】:2015-06-09 01:19:41
【问题描述】:

我有一个简单的 for 循环,它将一个列表分配给一个变量,我还想删除列表中所有变量的第一个元素。以下代码运行良好,但没有删除列表中的第一个元素,有什么建议吗?

    for x in range(0, len(dataList)-1):
        globals()['Row%s' % x] = dataList[x].split(',')
        del ['Row%s' % x] [0]

【问题讨论】:

    标签: python arrays list for-loop


    【解决方案1】:

    以下代码运行良好,但没有删除列表中的第一个元素,有什么建议吗?

    因为您没有告诉它删除列表中的第一个元素。您在删除行中缺少globals(),而只是创建了一个元素列表['Row1'] 并删除了'Row1'。试试:

     for x in range(0, len(dataList)-1):
        globals()['Row%s' % x] = dataList[x].split(',')
        del globals()['Row%s' % x] [0]
    

    不过,globals 对它来说是一个非常糟糕的 hack,而是使用字典或普通列表:

    data = []
    for x in range(0, len(datalist)-1):
        parts = x.split(',')
        del parts[0]
        data.append(parts)
    

    实际上,Python 可以对列表进行切片,并在不计数的情况下迭代项目:

    data = []
    for x in datalist:
        parts = x.split(',')
        data.append(parts[1:])
    

    实际上,它有一个很好的直接构建列表的快捷方式:

    data = [x.split(',')[1:] for x in datalist]
    

    【讨论】:

      【解决方案2】:

      给你:

       for x in range(0, len(dataList)-1):
          if x == 0:
              continue
          globals()['Row%s' % x] = dataList[x].split(',')
          del ['Row%s' % x] [0]
      

      【讨论】:

      • del ['Row%s' % x] [0] 变成 del ['Row5'][0] 时会做什么?用字符串'Row5'建立一个单项列表,删除'Row5',然后把空列表扔掉。
      猜你喜欢
      • 2011-01-04
      • 1970-01-01
      • 2017-04-17
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多