访问列表列表中的项目

Joh*_*ohn 32 python list

如果我有一个列表列表并且只想操作该列表中的单个项目,我将如何进行此操作?

例如:

List1 = [[10,13,17],[3,5,1],[13,11,12]]
Run Code Online (Sandbox Code Playgroud)

如果我想取一个值(比如说50)并查看第一个子列表List1,然后减去10(第一个值),然后加13,然后减去17,该怎么办?

ars*_*jii 41

您可以通过首先指定您感兴趣的列表然后指定所需列表中的哪个元素来访问列表列表中的元素.例如,列表中的17元素是:20list1[0][2]

>>> list1 = [[10,13,17],[3,5,1],[13,11,12]]
>>> list1[0][2]
17
Run Code Online (Sandbox Code Playgroud)

所以,你的例子就是

50 - list1[0][0] + list1[0][1] - list1[0][2]
Run Code Online (Sandbox Code Playgroud)

  • @John很高兴我可以帮忙.不要忘记[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). (5认同)
  • @PlokavianNerveGas是的,它确实有效,您认为这个答案是什么?你调用列表`list1`然后试图得到`list [x] [y]`,而不是`list1 [x] [y]`.那是你的问题. (3认同)

Ash*_*ary 5

您可以使用itertools.cycle

>>> from itertools import cycle
>>> lis = [[10,13,17],[3,5,1],[13,11,12]]
>>> cyc = cycle((-1, 1))
>>> 50 + sum(x*next(cyc) for x in lis[0])   # lis[0] is [10,13,17]
36
Run Code Online (Sandbox Code Playgroud)

这里的生成器表达式sum将返回如下内容:

>>> cyc = cycle((-1, 1))
>>> [x*next(cyc) for x in lis[0]]
[-10, 13, -17]
Run Code Online (Sandbox Code Playgroud)

您也可以zip在这里使用:

>>> cyc = cycle((-1, 1))
>>> [x*y for x, y  in zip(lis[0], cyc)]
[-10, 13, -17]
Run Code Online (Sandbox Code Playgroud)