17

私は日本語のかな記憶を助けるために小さなスクリプトを書いています。次のリストを 1 つにまとめるにはどうすればよいですか? 私は次のようにしてみました。

a = ["a",   "i",   "u",   "e",   "o"]
k = ["ka",  "ki",  "ku",  "ke",  "ko"]
g = ["ga",  "gi",  "gu",  "ge",  "go"]
s = ["sa",  "shi", "su",  "se",  "so"]
z = ["za",  "ji",  "zu",  "ze",  "zo"]
t = ["ta",  "chi", "tsu", "te",  "to"]
d = ["da",         "du",  "de",  "do"]
n = ["na",  "ni",  "nu",  "ne",  "no"]
h = ["ha",  "hi",  "hu",  "he",  "ho"]
b = ["ba",  "bi",  "bu",  "be",  "bo"]
p = ["pa",  "pi",  "pu",  "pe",  "po"]
m = ["ma",  "mi",  "mu",  "me",  "mo"]
y = ["ya",         "yu",         "yo"]
n = ["n"]

kana = [a, k, g, s, z, t, d, n, h, b, p, m, y, n]

print kana
4

8 に答える 8

19

一方通行:

kana = a + k + g + s + z + t + d + n + h + b + p + m + y + n
于 2012-05-03T02:15:24.770 に答える
17

質問は、リストのリストをどのように平坦化するかを効果的に尋ねています。これは、ここで回答されています: join list of lists in python

次のようにしてすべてを印刷できます。

import itertools
print list(itertools.chain(*kana))
于 2012-05-03T02:25:39.893 に答える
5
kana = sum([a, k, g, s, z, t, d, n, h, b, p, m, y, n], [])
于 2012-05-03T02:25:24.763 に答える
2

フラット化されたリストは元のオブジェクトを元のリストのリストと共有するという、 1 つの非常に重要な事実にも注意する必要があります。この場合、オブジェクトは不変の文字列であるため、これは問題ではありません。オブジェクトが変更可能な場合、1 つの構造体でそれらを変更すると、2 番目の構造体を介して観測可能な要素の値が変更されます。

要約すると、Python の内部構造についてもう少し知っておく必要があります。次のように、元のサブリストのコピーを作成したい場合があります。

...
result = []
for sublist in lst:
    result.extend(sublist[:])     # notice the [:] here
...
于 2012-05-03T19:38:17.050 に答える
1

ラムダの他の方法

kana = [a, k, g, s, z, t, d, n, h, b, p, m, y, n]

reduce(lambda x,y: x+y,kana)
于 2013-01-25T04:14:17.207 に答える
1

so_on以下は、組み合わせたい実際の残りのリストを表すために、例でショートカットとして使用されているリスト内包表記です。

長い道のり:

>>> all_list = [e for l in [a, k, so_on] for e in l]
于 2012-05-03T02:28:53.027 に答える
1
kana = [a, k, g, s, z, t, d, n, h, b, p, m, y, n]
combined_list=[]
for x in kana:
    combined_list.extend(x) 
print(combined_list)

['a', 'i', 'u', 'e', 'o', 'ka', 'ki', 'ku', 'ke', 'ko', 'ga', 'gi', 'gu', 'ge', 'go', 'sa', 'shi', 'su', 'se', 'so', 'za', 'ji', 'zu', 'ze', 'zo', 'ta', 'chi', 'tsu', 'te', 'to', 'da', 'du', 'de', 'do', 'n', 'ha', 'hi', 'hu', 'he', 'ho', 'ba', 'bi', 'bu', 'be', 'bo', 'pa', 'pi', 'pu', 'pe', 'po', 'ma', 'mi', 'mu', 'me', 'mo', 'ya', 'yu', 'yo', 'n']
于 2012-05-03T02:39:47.487 に答える