【发布时间】:2010-11-17 20:01:32
【问题描述】:
我的函数需要一个列表或元组作为参数。它并不关心它是什么,它所做的只是将它传递给另一个接受列表或元组的函数:
def func(arg): # arg is tuple or list
another_func(x)
# do other stuff here
现在我需要稍微修改一下函数,来处理一个额外的元素:
def func(arg): #arg is tuple or list
another_func(x + ['a'])
# etc
不幸的是,这行不通:如果 arg 是元组,我必须说 x + ('a',)。
显然,我可以通过强制 arg 列出来使其工作。但它并不整洁。
有没有更好的方法呢?当然,我不能强迫调用者总是传递一个元组,因为它只是转移给他们工作。
【问题讨论】:
-
如果其他函数接受任何一个,我都会向它发送一个元组,因为它会更快地为您工作。那么
tuple(x) + ('a',)有什么不好的地方呢? -
元组在实现中是否更快?
-
从字符串和数字文字构造元组比构造列表更快。更重要的是,
tuple(x)只返回x如果它已经是一个元组,而list(x)复制x即使它已经是一个列表。因此,通过使用元组,您可以减少一半输入案例的大部分工作。 -
+1:关于元组与列表的好点。
标签: python list coding-style tuples