【问题标题】:Slicing element from sublist - Python从子列表中切片元素 - Python
【发布时间】:2018-08-17 10:34:08
【问题描述】:

我想从这里返回数字 5:

list_1 = [[1, 2, 3], [4, 5, 6]]

我认为这会起作用,但事实并非如此:

print(list_1[1:1])

它返回一个空列表。它是索引 1(第二个列表)和位置 1(列表中的第二个数字)。

这不应该有效吗?

【问题讨论】:

    标签: python list slice


    【解决方案1】:

    你需要两个独立的操作:

    sub_list = list_1[1]
    item = sub_list[1]
    # or shortly list_1[1][1]
    

    您所做的是调用具有[from:to:step] 接口的切片接口。所以它的意思是:“给我索引 1 到 索引 1 的所有项目”(阅读切片以获取更多信息)。

    【讨论】:

      【解决方案2】:
      list_1[1][1]
      

      第一个 [1] 给你 [4, 5, 6]。下一个 [1] 给你 5

      【讨论】:

        【解决方案3】:

        list_1 = [[1, 2, 3], [4, 5, 6]]

        然后

        list_1[0] == [1,2,3]
        list_1[1] == [4,5,6]
        

        然后

        list_1[1][1:1] == []  #slice starting from position '1', and around to the position before '1', effectively returning an empty list
        list_1[1][1] == 5
        

        edit 来自 cmets 的更正

        【讨论】:

        • list_1[1][1:1] = 5 不正确。你也应该使用== 而不是=
        • 是的,你是对的。我的意思是代表每个人是什么。用“==”替换“=”将使每一行都为“真”
        【解决方案4】:

        假设我们有一个列表:

        list_1 = [[1, 2, 3], [4, 5, 6]]
        

        你的问题是问,为什么

        list_1[1:1]
        

        返回[]?

        因为您要的是从索引 1 到索引 1 的对象,这没什么。

        拿一个简单的清单:

        >>> x = [1, 2, 3]
        >>> x[1:1]
        []
        

        这也是空的,因为您要查询从索引 1 到索引 1 的所有对象。

        第二个数字所做的只是说最大范围不包括。所以...

        >>> x = [1, 2, 3]
        >>> x[1:10000]
        [2, 3]
        >>> x[1:-1023]
        []
        >>> x[1:2]
        [2]
        

        如果第一个数字等于或大于第二个数字,除非您更改切片的 step(如果相等,它会始终为空)

        一个二维数组,如果你想要列表中第二个列表的第二个对象:

        >>> list_1[1]
        [4, 5, 6]
        >>> list_1[1][1]
        5
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-12
          • 1970-01-01
          • 2020-08-08
          • 2014-03-07
          • 2015-08-25
          • 2017-02-26
          • 2010-10-11
          • 2018-11-21
          相关资源
          最近更新 更多