【问题标题】:How to separate list items in python on the basis of something common? [duplicate]python - 如何根据常见的东西分离python中的列表项? [复制]
【发布时间】:2021-04-18 04:36:14
【问题描述】:

假设有一个列表

primary_list=['f1', 'f2', 'f3', 't1.txt', 't2.txt', 't3.txt', 't4.txt', 't5.txt']

现在如果我想用“.txt”分隔元素以进入一个新的单独列表,我该怎么做?

【问题讨论】:

  • 您要修改此列表以删除不需要的项目,还是要一个仅包含所需内容的新列表?
  • @quamrana 是的,你可以说我想通过删除元素来修改这个列表我不希望那些元素是那些没有任何扩展名的元素。
  • 不,它没有回答我的问题,下面的答案就是我想要的。
  • 好的,但是我链接到的问题主要是通过创建新列表的列表理解来回答的。很少有人修改列表。

标签: python python-3.x list


【解决方案1】:

如 Nk03 的回答和 quamrana 的评论所示,您可以使用列表推导来创建一个新列表。除此之外,如果您想专门过滤后缀,请使用 endswith() 方法。否则,即使 .txt 恰好出现在文本中的其他位置,项目也会被过滤掉。

primary_list=['f1', 'f2', 'f3', 't1.txt', 't2.txt', 't3.txt', 't4.txt', 't5.txt']
new_list = [item for item in primary_list if not item.endswith('.txt')]
new_list_two = [item for item in primary_list if item.endswith('.txt')]
print(new_list)
print(new_list_two)

输出:

['f1', 'f2', 'f3']
['t1.txt', 't2.txt', 't3.txt', 't4.txt', 't5.txt']

【讨论】:

    【解决方案2】:

    您可以将列表推导与字符串拆分方法一起使用 -

    new_list_without_txt = [item for item in primary_list if '.txt' not in item ]
    new_list_with_txt = [item for item in primary_list if '.txt' in item ]
    print(new_list_without_txt)
    print(new_list_with_txt)
    

    输出--

    ['f1', 'f2', 'f3']
    ['t1.txt', 't2.txt', 't3.txt', 't4.txt', 't5.txt']
    
    primary_list=['f1', 'f2', 'f3', 't1.txt', 't2.txt', 't3.txt', 't4.txt', 't5.txt']
    new_list = [item.split('.txt')[0] if '.txt' in item else item for item in primary_list]
    print(new_list)
    

    输出 -

    ['f1', 'f2', 'f3', 't1', 't2', 't3', 't4', 't5']
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2012-03-16
      • 2020-09-13
      • 2021-12-11
      • 2017-04-25
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多