我创建了一个列表,并希望从列表中选择一些要打印的项目。下面,我只想打印出来"熊"在索引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']
如何打印多个非连续的列表元素?
答案 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