我需要用 5 个位置填充一个列表。
new_list = ___ ___ ___ ___ ___
我收到 2 个列表,我有一个默认值来填充新列表。
现在开始做题:
好的方法是,我从 listA 收到 2 个值,从 listB 收到 2 个值并添加默认值
A1 A2 DEFAULT B1 B2
但是现在,如果 listA 是空的,我需要以另一种方式填充:
DEFAULT B1 B2 B3 B4
如果 listB 为空,则相同。
如果 listA 只有 1 个元素,而 listB 是另一个元素,它应该是:
A1 DEFAULT B1
编辑:listA 和 listB 有更多对象
最佳答案
您可以通过使用 a 和 b 从默认用户开始递归构建列表来解决此问题。
def build_list(listA,listB,default=None):
if default is None:
default = [DEFAULT_USER]
if len(default) == 5 or len(listA) + len(listB) == 0:
return default
else:
default = listA[:1] + default + listB[:1]
return build_list(listA[1:],listB[1:],default)
这会将 listA 的一个元素添加到开头,将 listB 的一个元素添加到结尾,直到默认长度为 5。如果其中一个列表变为空,它将简单地从该列表中添加任何内容,给出确切的行为你自找的。
它会一直运行,直到所有输入列表的长度为 0 或默认长度为 5。此方法适用于任何长度的列表,包括零,但不会保留列表 A 中元素的顺序。
一些测试示例:
>>> DEFAULT_USER=1000
>>> build_list([1],[2])
[1,1000,2]
>>> build_list([],[1,2,3,4,5,6,7,8,9])
[1000, 1, 2, 3, 4]
>>> build_list([1,2,3,4,5],[6,7,8,9,10])
[2, 1, 1000, 6, 7]
>>> build_list([1,2,3,4,5,6,7,8,9],[])
[4, 3, 2, 1, 1000]
关于python - 以特定方式填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38441568/