如何明确地从列表中选择元素
How to explicitly choose elements from a list
my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
我想打印“wow”、“nice”、“peach”
所以:
my_list[1]
my_list[5]
my_list[2]
我怎样才能在一行中做到这一点,或者至少比上面的更快?
您可以使用operator.itemgetter
>>> from operator import itemgetter
>>> my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
>>> itemgetter(1, 5, 2)(my_list)
('wow', 'nice', 'peach')
使用:
print(*map(lambda x: my_list[x], [1, 5, 2]))
输出:
wow nice peach
您可以使用列表理解来 return 值列表:
[my_list[i] for i in [1, 5, 2]]
或一一打印:
for i in [1, 5, 2]:
print(my_list[i])
或作为 1-liner 使用参数解包 (*
) 运算符来“展平”生成器:
print(*(my_list[i] for i in [1, 5, 2]), sep='\n')
您也可以使用列表理解
>>> [my_list[x] for x in [1, 5, 2]]
['wow', 'nice', 'peach']
甚至
>>> [print(my_list[x]) for x in [1, 5, 2]]
wow
nice
peach
如果有人喜欢简单的方法而不需要任何复杂的语法库,这可能是一个解决方案!
要使代码看起来干净,最好的方法是为它添加一个函数,它使它既更干净又具有更多功能。
代码:
def printList(list, *index, all=False):
if all:
for item in list:
print(item)
else:
for i in index:
print(list[i])
my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
printList(my_list, 1, 5, 2) # To print some elements
print("---------------------------")
printList(my_list, all=True)
输出:
wow
nice
peach
---------------------------
zero
wow
peach
3
4
nice
pickle
my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
我想打印“wow”、“nice”、“peach”
所以:
my_list[1]
my_list[5]
my_list[2]
我怎样才能在一行中做到这一点,或者至少比上面的更快?
您可以使用operator.itemgetter
>>> from operator import itemgetter
>>> my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
>>> itemgetter(1, 5, 2)(my_list)
('wow', 'nice', 'peach')
使用:
print(*map(lambda x: my_list[x], [1, 5, 2]))
输出:
wow nice peach
您可以使用列表理解来 return 值列表:
[my_list[i] for i in [1, 5, 2]]
或一一打印:
for i in [1, 5, 2]:
print(my_list[i])
或作为 1-liner 使用参数解包 (*
) 运算符来“展平”生成器:
print(*(my_list[i] for i in [1, 5, 2]), sep='\n')
您也可以使用列表理解
>>> [my_list[x] for x in [1, 5, 2]]
['wow', 'nice', 'peach']
甚至
>>> [print(my_list[x]) for x in [1, 5, 2]]
wow
nice
peach
如果有人喜欢简单的方法而不需要任何复杂的语法库,这可能是一个解决方案!
要使代码看起来干净,最好的方法是为它添加一个函数,它使它既更干净又具有更多功能。
代码:
def printList(list, *index, all=False):
if all:
for item in list:
print(item)
else:
for i in index:
print(list[i])
my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
printList(my_list, 1, 5, 2) # To print some elements
print("---------------------------")
printList(my_list, all=True)
输出:
wow
nice
peach
---------------------------
zero
wow
peach
3
4
nice
pickle