1

2 つの異なるリストの要素を組み合わせて 1 つの単語を作成する関数を jython で作成しようとしています。

例えば:

この関数は、a と b の両方の名前の 2 つのリストを受け取ります

aが["eat", "pray", "love"] b で["er", "ing", "d"] 、makeWord(a,b) と入力すると、次のように返されます。

["eater", "praying", "loved"]

これまでのところ、私は持っています:

def makeWords(a,b):
     a = []
    list1 = a
    b = []
    list2 = b
    new_list = []
    for word in list1:
        new_list.append((list1[i] + list2[i]))
    return new_list

しかし、私は明らかに少なくともいくつかのことを間違っていることを知っています。どんな助けでも大歓迎です!!

4

2 に答える 2

4

どうですか:

map(lambda x: ''.join(x), zip(list1, list2))

または間違いなくもっと読みやすい:

map(''.join, zip(list1, list2))
于 2012-06-07T03:07:09.337 に答える
2

これもうまくいくはずです:

>>> a = ["eat", "pray", "love"]
>>> b = ["er", "ing", "d"]
>>> [start + end for start, end in zip(a, b)]
['eater', 'praying', 'loved']

Joel Cornett の場合、timeitコードは次のとおりです。

import timeit

a = '''
a = ["eat", "pray", "love"]
b = ["er", "ing", "d"]
[start + end for start, end in zip(a, b)]
'''

b = '''
a = ["eat", "pray", "love"]
b = ["er", "ing", "d"]
map(lambda x: ''.join(x), zip(a, b))
'''

c = '''
a = ["eat", "pray", "love"]
b = ["er", "ing", "d"]
map(''.join, zip(a, b))
'''

timeit.Timer(a).timeit(number=1000000)
timeit.Timer(b).timeit(number=1000000)
timeit.Timer(c).timeit(number=1000000)
于 2012-06-07T03:11:40.050 に答える