2017-05-19 31 views
0

,如果有做的更优雅的方式我想知道的一个函数的输出如下:扩展单独的列表与

编辑:

def whaa(x): 
    # Let's not get too picky about this function 
    return list(range(0,x)), list(range(-1,x)) 

a, b = whaa(10) 
c = whaa(20) 
a.extend(c[0]) 
b.extend(c[1]) 

编辑:函数的行为取决于输入。我希望将相应的输出整齐地放入同一个列表中。

本质上,我想要做的是访问输出元组的各个元素并扩展我的列表,而不必经历将输出存储到单独变量中的麻烦。它似乎是给了这个构造,这不是可能的,但我愿意接受建议!

回答

2

你可以这样做:

for x, y in zip([a, b], c): 
    x.extend(y) 

但是,为什么你不只是把ab列在首位呢?

c = whaa(10) 
for x, y in zip(c, whaa(20)): 
    x.extend(y) 
a, b = c      # save unpacking until the end 
+0

啊!这工作!我想保存开箱直到最后是我失踪。谢谢! 我不明白你关于在列表中留下a和b的问题。他们是名单,不是吗? –

+0

无论什么类型a和b都是。只是他们是相关的,你想对他们重复类似的操作,所以把他们保存在一个集合中。列表在这里是适当的,所以你有'[a,b]'的列表。是的,它们也是列表,所以它是嵌套列表,但'a'和'b'的类型并不重要 - 我们可以添加ints或以相同样式更新字典。 –

2

使用for循环,延长返回的元组的每个元素:

a, b = tuple(x * 2 for x in whaa()) 

a 
# [1, 2, 3, 1, 2, 3] 

b 
# [2, 3, 4, 2, 3, 4] 

对于更新的问题,你可以使用zip作为@约翰的回答:

a, b = tuple(x + y for x, y in zip(whaa(10), whaa(20))) 
+0

我觉得你的代码将在工作的情况下我已经问,但我没有考虑到以下事实,这不正是我是问。我会编辑这个问题,以反映我以后的真实情况!对于那个很抱歉! –