【问题标题】:Python extracting item from sublist into variablePython从子列表中提取项目到变量中
【发布时间】:2019-02-12 11:34:31
【问题描述】:

我试图在这个子列表中使用某些项目,并在它不想工作的 if 语句中使用它,它可能是不经意的,只是似乎找不到任何东西

path = [['Start', 'Centre', 2], ['East', 3, 2], ['West', 6, 3], ['North', 1, 1]]
x = path[0]
if x == 'Start':
    print(x)

【问题讨论】:

    标签: python python-3.x list nested


    【解决方案1】:

    您可以访问子列表的元素,如下所示:

    path = [['Start', 'Centre', 2], ['East', 3, 2], ['West', 6, 3], ['North', 1, 1]]
    x = path[0][0]
    if x == 'Start':
        print(x)
    

    【讨论】:

      【解决方案2】:

      您将需要一个for 循环来识别所有满足您条件的子列表。在这里,我们将它包装在生成器表达式中以使其保持惰性:

      path = [['Start', 'Centre', 2], ['East', 3, 2], ['West', 6, 3], ['North', 1, 1]]
      
      for value in (var for var, *others in path if var == 'Start'):
          print(value)
      
      # Start
      

      【讨论】:

        【解决方案3】:

        x 是一个列表。您可能打算使用 x[0] 即该列表的第一个元素。

        path = [['Start', 'Centre', 2], ['East', 3, 2], ['West', 6, 3], ['North', 1, 1]]
        x = path[0]
        if x[0] == 'Start':
            print(x)
        

        【讨论】:

          【解决方案4】:

          这个问题你可以自己轻松解决,只需在你的 python shell 中检查path[0] 的值:

          $ python3
          Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
          [GCC 7.3.0] on linux
          Type "help", "copyright", "credits" or "license" for more information.
          >>> 
          >>> path = [['Start', 'Centre', 2], ['East', 3, 2], ['West', 6, 3], ['North', 1, 1]]
          >>> x = path[0]
          >>> x
          ['Start', 'Centre', 2]
          

          你可以看到 - 惊喜 - path[0] 是一个 list,所以很明显它不能与字符串进行比较。你要找的字符串是x中的第一个,所以是x[0]:

          >>> x[0] == "Start"
          True
          

          实际上只看path 的定义就足以找出这一点——它是一个列表,所以path[0] 显然是一个列表;-)

          【讨论】:

            猜你喜欢
            • 2011-08-22
            • 2018-08-08
            • 1970-01-01
            • 1970-01-01
            • 2021-12-05
            • 1970-01-01
            • 2018-07-15
            • 1970-01-01
            • 2022-12-20
            相关资源
            最近更新 更多