如何使用Python 3.5.1从列表中打印多个非连续值

时间:2017-01-03 02:23:06

标签: python list python-3.x

我创建了一个列表,并希望从列表中选择一些要打印的项目。下面,我只想打印出来"熊"在索引0和"袋鼠"在索引3.我的语法不正确:

>>> animals = ['bear', 'python', 'peacock', 'kangaroo', 'whale', 'platypus']
>>> print (animals[0,3])
  

回溯(最近一次呼叫最后一次):文件"",第1行,in    print(animals [0,3])TypeError:list indices必须是整数   或切片,而不是元组

我尝试在索引之间使用空格,但仍然出错:

>>> print (animals[0, 3])
  

回溯(最近一次呼叫最后一次):文件"",第1行,in    print(animals [0,3])TypeError:list indices必须是   整数或切片,而不是元组

我可以打印单个值或0-3范围,例如:

>>> print (animals [1:4])
['python', 'peacock', 'kangaroo']

如何打印多个非连续的列表元素?

5 个答案:

答案 0 :(得分:7)

要从列表中选择任意项目,您可以使用operator.itemgetter

>>> from operator import itemgetter    
>>> print(*itemgetter(0, 3)(animals))
bear kangaroo
>>> print(*itemgetter(0, 5, 3)(animals))
bear platypus kangaroo

答案 1 :(得分:6)

Python animals[0,3]类型不支持使用list中的元组进行切片。如果您想要某些任意值,则必须单独索引它们。

print(animals[0], animals[3])

答案 2 :(得分:5)

list(animals[x] for x in (0,3))是您想要的子集。与numpy数组不同,本机Python列表不接受列表作为索引。

您需要将生成器表达式包装在list中以打印它,因为它本身没有可接受的__str____repr__。您还可以使用str.join获得可接受的效果:', '.join(animals[x] for x in (0,3))

答案 3 :(得分:2)

Python的列表类型默认不支持。返回一个切片对象,表示由range(start,stop,step)指定的索引集。

class slice(start, stop[, step])

>>>animals[0:5:2]
['bear', 'peacock', 'whale']

创建一个自己实现的子类或间接获取指定的值。 e.g:

>>>map(animals.__getitem__, [0,3])
['bear', 'kangaroo']

答案 4 :(得分:0)

param_id