0

タイトルがぎこちなくて申し訳ありませんが、ここで詳しく説明します。

以下の関数で;

def returnList():
  list = []
  for i in xrange(4):
    list.append(i)

  return list

リスト[0,1,2,3]を返します。別の機能では;

def returnAllLists():
  totalList = []
  for i in xrange(4):
    totalList.append(returnList())

  return totalList

予想通り、次のような結果になります

[[1,2,3,4]、[1,2,3,4]、[1,2,3,4]、[1,2,3,4]]
。トリッキーな部分は、結果が必要なことです
[1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
。もちろん、returnAllListの結果を別のリストに簡単に割り当てて、2つのループに進み、要素を個別に別のリストに挿入することもできますが、私のメソッドはO(N ^ 2)の複雑さを持っているため、より効率的な方法が可能だと思います。同じ値を別の方法で割り当てる。助言がありますか?

4

4 に答える 4

9

extend()の代わりに使用append()

 totalList.extend(returnList())

まさにあなたが望むことをします。

于 2012-11-06T19:52:55.593 に答える
0

itertoolsのドキュメントから:

def flatten(listOfLists):
    "Flatten one level of nesting"
    return chain.from_iterable(listOfLists)

append()もちろん、に変更することはできないと仮定していますextend()

于 2012-11-06T19:55:42.327 に答える
0

このようなもの:

In [17]: lis=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]

In [18]: sum(lis,[])
Out[18]: [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
于 2012-11-06T20:06:34.563 に答える
0
     python 3.2

    a=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]        


    res=[i for v in a for i in v]


    another method:
    list(i.chain(*a))
于 2012-11-07T02:36:01.790 に答える