【问题标题】:Slice to " "space in python在python中切片到“”空间
【发布时间】:2011-04-26 18:28:33
【问题描述】:

如果L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]

如何将 L 切片以使所有内容都达到第一个空格

['abc,'foo','bar']

【问题讨论】:

  • 我喜欢这些 Python 速度编码。它们清楚地显示了 Python 编码在实践中的速度有多快。 ;)
  • 当然,如果总是前三个字符,你可以使用[i[0][0:3] for i in L]

标签: python slice


【解决方案1】:
In [1]: L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]

In [2]: [x[0].split(' ')[0] for x in L]
Out[2]: ['abc', 'foo', 'bar']

【讨论】:

    【解决方案2】:
    L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
    print [x[0].split()[0] for x in L]
    

    【讨论】:

      【解决方案3】:
      for i in range(len(L)):
          s = L[i][0]
          s = s.split(' ')[0]
          L[i] = s
      

      【讨论】:

      • Ewwww。学习列表理解,伙计!
      • @ulidtko Meh,我以我会采取的方式给出了答案,并不意味着它必须被接受或赞成
      【解决方案4】:

      在您介绍的情况下,空格始终出现在相同的位置。如果您知道会出现这种情况,您可以执行以下操作:

      L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
      L2 = [x[0][0:3] for x in L]
      print L2
      

      输出:

      ['abc', 'foo', 'bar']

      当然,如果空格可以出现在不同的位置,那么您最好使用str.split() 的解决方案之一。

      【讨论】:

        【解决方案5】:

        我发现列表推导有时更难阅读,我希望将循环和提取分开:

        def extract(element):
            """Extracts the string until the first space of the first element of a list
            >>> extract(['abc 1234',2])
            'abc'
            """
            return element[0].split()[0]
        

        这样您就可以对单个元素进行一些测试:

        extract(L[2])
        'bar'
        

        然后通过列表推导或使用 map [将函数应用于列表的每个元素]:

        map(extract,L)
        ['abc', 'foo', 'bar']
        

        【讨论】:

          猜你喜欢
          • 2018-12-02
          • 1970-01-01
          • 2018-07-05
          • 1970-01-01
          • 2019-12-26
          • 1970-01-01
          • 2021-11-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多