2

編集: エラーに気付きました (if ステートメント、変数 x が文字列内の要素に割り当てられており、リストの長さと比較しています)。明日の朝に解決しようとしています。愚かなエラーをお詫びしますが、少しでも学んでいただければ幸いです。

2 つのリストを 1 つのリストに結合しようとしています。

 m = [1,2,3]
 n = [4,5,6]
 v = m+n

 def myFun():
   return [(str(x)+str(y)) for x in m if x < len(m) for y in n if y < len(n)]

 print(myFun())

myFun() の結果は「14, 25, 36」と表示されます

私はまた、コードをより Pythonic な世界に分解しようとしましたが、私が迷子になった場所を見てきました:

 def my(fun()):
   for x in m if x < len(m):
     for y in n if y < len(n): # problem here, running until count 9 instead of 3
                               # like it's supposed to.. author error.. 
       newlist.append(str(x)+str(y))
   print(newlist)

私は正しい方向に向かっているのでしょうか、それともマップを作成しようとすべきでしょうか? list-comp または lambda で逆にする必要がある場合、マップは非生産的である可能性があると言っているページをいくつか見たことがありますか? また、リスト内包表記/ラムダ内の特定のオブジェクトをカウントすることは可能ですか? (例: リストの長さ)?

4

2 に答える 2

5

使用zip()

In [8]: m = [1,2,3]

In [9]: n = [4,5,6]

In [10]: [str(x)+str(y) for x,y in zip(m,n)]
Out[10]: ['14', '25', '36']

またはitertools.izip_longest()、リストの長さが異なる場合に使用します。

In [2]: m=[1,2,3]

In [3]: n=[4,5,6,7]

In [4]: from itertools import izip_longest

In [5]: [str(x)+str(y) for x,y in izip_longest(m,n,fillvalue="")]
Out[5]: ['14', '25', '36', '7']
于 2012-10-27T10:51:56.750 に答える
3

マップを使用:

map(lambda a, b: str(a) + str(b), m, n)
于 2012-10-27T10:59:42.840 に答える