2

次のようなリストがある場合、異なるリストの2つのアイテムを連結するにはどうすればよいですか。

data_list = [['Toys', 'Communications', 'Leather'], ['Teddy', 'Mobile', 'Hand'], ['bear', 'phone', 'bag']]

zip関数を使用して、次のようなタプルに変換しました。

data_tupled_list = zip(*data_list)

このような結果になります:

[('Toys', 'Teddy', 'bear'),
 ('Communications', 'Mobile', 'phone'),
 ('Leather', 'Hand', 'bag')]

私はこのようなリストが欲しいです:

[('Toys', 'Teddybear'),
 ('Communications', 'Mobilephone'),
 ('Leather', 'Handbag')]
4

3 に答える 3

6

あなたはそこにほとんどの道を進んでいます:

data_tupled_list = [(x[0],x[1]+x[2]) for x in zip(*data_list)]

タプルを解凍すると、もう少しきれいになる可能性があります。

data_tupled_list = [(a,b+c) for a,b,c in zip(*data_list)]

そして、もっと意味のある名前を付けることができれば、間違いなくもっときれいになるでしょう。abc

于 2013-03-07T13:43:30.560 に答える
1

Python3でこれを書く良い方法があります

>>> data_list = [['Toys', 'Communications', 'Leather'], ['Teddy', 'Mobile', 'Hand'], ['bear', 'phone', 'bag']]
>>> [(x, ''.join(args)) for x, *args in zip(*data_list)]
[('Toys', 'Teddybear'), ('Communications', 'Mobilephone'), ('Leather', 'Handbag')]
于 2013-03-07T13:46:16.157 に答える
0

私はそれを 2 つの部分に分けて操作します。あなたは本当に次のことをしたい:

data_list = [['Toys', 'Communications', 'Leather'], ['Teddy', 'Mobile', 'Hand'], ['bear', 'phone', 'bag']]
groups = data_list[0]
predicates = data_list[1]
suffixes = data_list[2]

combined = [ ''.join((pred, suff)) for pred, suff in zip(predicates, suffixes)]
finalresult = zip(groups, combined)
于 2013-03-07T14:08:18.310 に答える