我目前正在尝试编写一个函数,该函数创建并返回指定长度的列表,其中包含指定值的重复。我真的不确定如何从输入的参数中获取函数来创建列表。非常感谢帮助!我不要求为我编写代码,只是简单解释我应该使用什么Python函数或者指向正确方向的东西。到目前为止我唯一的代码就是这个,我知道这是错误的:
def makeList(a,b):
myList = []
myList = makeList
return myList
答案 0 :(得分:3)
修改强>
既然你说你想要使用循环:
>>> def makeList(a, b):
... myList = []
... for _ in range(b):
... myList.append(a)
... return myList
...
>>> makeList('a', 12)
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> makeList(3, 12)
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>>
实际上,因为解决方案很短,解释它的最简单方法是演示:
>>> def makeList(a, b):
... return [a] * b
...
>>> makeList('a', 12)
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> makeList(3, 12)
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>>
基本上,您将a
放在列表中,然后将该列表乘以b
。这样做会创建一个列表,其内容a
重复b
次。
但应注意,如果a
是可变对象(例如列表),则上述函数将返回包含b
对同一对象a
的引用的列表}。
如果不希望出现这种行为,那么您可以使用列表推导和copy.deepcopy
:
>>> from copy import deepcopy
>>> def makeList(a, b):
... return [deepcopy(a) for _ in range(b)]
...
>>> makeList('a', 12)
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> makeList(3, 12)
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>>
最后,这里有一些有用的参考资料:
注意:在所有演示中,假设b
是一个整数。
答案 1 :(得分:0)
您可以将列表相乘以生成更大的列表。在Python解释器中尝试此代码:
>>> [1] * 5
[1, 1, 1, 1, 1]
>>> [1, 2] * 5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
所以你应该能够在一个函数中做这样的事情:
def makeList(a,b):
return [a] * b
您还可以使用列表附加()函数:
>>> x = [1, 2]
>>> x.append(99)
>>> print x
[1, 2, 99]
交互式Python解释器有一个很棒的内置帮助系统。您可以使用dir()和help()来查找可用的函数及其工作方式。试试这个:
>>> x = [1, 2]
>>> dir(x) # lists the functions you can call on x
>>> help(x.append) # Describes each function
>>> help(x.extend)
等