a = [1, 2]
print a * 2
生成[1, 2, 1, 2]
。现在
b = [[1, 2], [3, 4]]
我可以在不循环的情况下将b
转换为[[1, 2, 1, 2], [3, 4, 3, 4]]
吗?
答案 0 :(得分:8)
如果您不介意元组列表,可以尝试一些zip
恶作剧:
zip(*zip(*b)*2)
返回
[(1, 2, 1, 2), (3, 4, 3, 4)]
答案 1 :(得分:4)
列表推导是否算作循环?
>>> [x*2 for x in b]
[[1, 2, 1, 2], [3, 4, 3, 4]]
答案 2 :(得分:3)
如果你不能使用循环,请随意使用递归:
def expand(mylist,n):
if len(mylist)==1:
return [mylist[0]*n]
else:
return [mylist[0]*n] + expand(mylist[1:],n)
输入:
a = [[1,2],[3,4],[5,6]]
呼叫:
expand(a,2)
输出:
[[1, 2, 1, 2], [3, 4, 3, 4], [5, 6, 5, 6]]
答案 3 :(得分:0)
正如其他人所说的那样,无论如何解决任意数量的列表问题,迭代都会发生。如果您的列表只有2个成员,则以下解决方案无需迭代即可运行:
b = [[1, 2], [3, 4]]
# Uses iterable unpacking, which may be considered iteration
l1, l2 = b
# If you don't want iterable unpacking, use that instead:
# l1 = b[0]; l2 = b[1]
print [l1 * 2, l2 * 2]
对于任意数量的列表和“隐藏”迭代(您使用map
函数而不是使用显式for
循环进行迭代),请尝试以下操作:
b = [[1, 2], [3, 4]]
print map(lambda x: x * 2, b)
答案 4 :(得分:0)
您可以使用map
:
>>> b = [[1, 2], [3, 4]]
>>> list(map(lambda l: l*2, b))
[[1, 2, 1, 2], [3, 4, 3, 4]]