0

たとえば、リストがある場合[[['a', 'b', 'c'], ['d']],[['e'], ['f'], ['g']]]、関数は'a' 'b' 'c'...ect を出力する必要があります。リスト内の任意のバリエーションに対してこれを実行できる必要があります。

my_list = [[['a', 'b', 'c'], ['d']],[[[['e', ['f']]]]], ['g']]
def input1(my_list):

        for i in range(0, len(my_list)):
            my_list2 = my_list[i]
            for i in range(0, len(my_list2)):
                print(my_list2[i])

私のコードは機能していないようです。必要な機能に必要なものがたくさん欠けていることはわかっています。どんな提案も非常に役に立ちます

4

4 に答える 4

3

最初にリストを平坦化します。

>>> import collections
>>> def flatten(l):
...     for el in l:
...         if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
...             for sub in flatten(el):
...                 yield sub
...         else:
...             yield el
... 
>>> L = [[['a', 'b', 'c'], ['d']],[['e'], ['f'], ['g']]]
>>> for item in flatten(L):
...     print item
... 
a
b
c
d
e
f
g
于 2013-08-10T04:35:10.563 に答える
0
import compiler

for x in compiler.ast.flatten(my_list):
     print x
于 2013-08-10T10:25:15.063 に答える
0

これを行う再帰関数を次に示します。

def PrintStrings(L):
    if isinstance(L, basestring):
        print L
    else:
        for x in L:
            PrintStrings(x)


l = [[['a', 'b', 'c'], ['d']],[['e'], ['f'], ['g']]]
PrintStrings(l)
于 2013-08-10T04:43:12.497 に答える
0

ネストされたサブリストがいくつでも存在できる場合、これは再帰関数の優れた仕事です。基本的にはprintNestedList、引数がリストでない場合は引数を出力する、または引数がリストの場合は次を呼び出すなどの関数を記述します。printNestedListそのリストの各要素で。

nl = [[['a', 'b', 'c'], ['d']],[['e'], ['f'], ['g']]]

def printNestedList(nestedList):
    if len(nestedList) == 0:
    #   nestedList must be an empty list, so don't do anyting.
        return

    if not isinstance(nestedList, list):
    #   nestedList must not be a list, so print it out
        print nestedList
    else:
    #   nestedList must be a list, so call nestedList on each element.
        for element in nestedList:
            printNestedList(element)

printNestedList(nl)

出力:

a
b
c
d
e
f
g
于 2013-08-10T04:43:28.370 に答える