【问题标题】:Slicing a list with another list [duplicate]用另一个列表切片列表[重复]
【发布时间】:2021-07-21 08:25:18
【问题描述】:

我有一个类似的列表:

list = ['a', 'b', 'c', 'd', 'e']

我想切片,选择“a”、“c”、“d”。我尝试做:

list[0, 2, 3]

我收到一条错误消息:“列表索引必须是整数或切片,而不是元组”。

我也试过了:

list[True, False, True, True, False]

我收到一条错误消息:“列表索引必须是整数或切片,而不是列表”。

谁能帮帮我?

问候

【问题讨论】:

  • 我不相信这可以作为一个切片来完成,因为所需的元素是不规则的。你真的想要一个切片吗?
  • 这不是一个有效的列表切片......这是错误告诉你的。

标签: python list slice


【解决方案1】:

您可以使用列表推导:

result = [list[q] for q in selection]

其中selection 是包含您要提取的索引的列表。

作为一般规则:不要使用 list 作为变量名,因为它会覆盖内置的 list()

【讨论】:

    【解决方案2】:
    slicedList = [list[0],list[2],list[3]]
    

    【讨论】:

      【解决方案3】:

      试试这个:

      li1 = ['a', 'b', 'c', 'd', 'e']
      selected = ['a', 'c', 'd']
      list(filter(lambda x:x in selected, li1))
      

      【讨论】:

        【解决方案4】:

        你可以使用operator.itemgetter:

        from operator import itemgetter
        
        i = itemgetter(0, 2, 3)
        lst = ["a", "b", "c", "d", "e"]
        
        print(i(lst))
        

        打印:

        ('a', 'c', 'd')
        

        【讨论】:

          猜你喜欢
          • 2011-01-14
          • 2015-05-09
          • 1970-01-01
          • 2023-03-28
          • 1970-01-01
          • 2021-09-07
          • 1970-01-01
          • 2013-12-15
          • 2013-04-18
          相关资源
          最近更新 更多