【问题标题】:Splitting a list of strings with a delimiter and adding to new lists使用分隔符拆分字符串列表并添加到新列表
【发布时间】:2018-07-15 22:58:28
【问题描述】:

这是我的清单:

names = ['blue v orange', 'white v black', 'red v brown']  

我想将它们按' v ' 拆分并附加到这样的新列表中:

['blue', 'white', 'red']  # first
['orange', 'black', 'brown']  # second

拆分后如何附加它们?以下代码不起作用:

first = []
second = []

for x in names:
    first, second = x.split(' v ')

【问题讨论】:

  • 所以您的问题是:“如何在 Python 中将项目添加到列表中?”
  • 小心:部分问题是您正在重复使用变量名firstsecond

标签: python string list split


【解决方案1】:

你可以使用zip:

names = ['blue v orange', 'white v black', 'red v brown']  
first, second = map(list, zip(*map(lambda x:x.split(' v '), names)))  
print(first)
print(second)

输出:

['blue', 'white', 'red'] 
['orange', 'black', 'brown']

【讨论】:

    【解决方案2】:

    这是一个pythonic的解决方案:

    names = ['blue v orange', 'white v black', 'red v brown']
    
    x, y = list(zip(*(k.split(' v ') for k in names)))
    
    x  # ('blue', 'white', 'red')
    y  # ('orange', 'black', 'brown')
    

    【讨论】:

      【解决方案3】:

      只需分别附加到每个列表,但注意不要重复使用变量名:

      names = ['blue v orange', 'white v black', 'red v brown']  
      first = []
      second = []
      for x in names:
          f, s = x.split(' v ')
          first.append(f)
          second.append(s)
      
      print(first, second)
      

      结果:

      ['blue', 'white', 'red'] ['orange', 'black', 'brown']
      

      【讨论】:

        猜你喜欢
        • 2018-01-15
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        相关资源
        最近更新 更多