0

複数のリストに要素を追加する際に問題があります。私のプログラムは次のようになります。list は単なる一連の数字です。

for j in range(0, len(list)):
    if (int(list[j][4]) == 0 or int(list[j][:-4]) == 41601000000):
        filelist0.append(list[j])
    if (int(list[j][4]) == 1 or int(list[j][:-4]) == 41602000000):
        filelist1.append(list[j])
    if (int(list[j][4]) == 2 or int(list[j][:-4]) == 41603000000):
        filelist2.append(list[j])
    if (int(list[j][4]) == 3 or int(list[j][:-4]) == 41604000000):
        filelist3.append(list[j])
    if (int(list[j][4]) == 4 or int(list[j][:-4]) == 41605000000):
        filelist4.append(list[j])
    if (int(list[j][4]) == 5 or int(list[j][:-4]) == 41606000000):
        filelist5.append(list[j])
    if (int(list[j][4]) == 6 or int(list[j][:-4]) == 41607000000):
        filelist6.append(list[j])
    if (int(list[j][4]) == 7 or int(list[j][:-4]) == 41608000000):
        filelist7.append(list[j])
    if (int(list[j][4]) == 8 or int(list[j][:-4]) == 41609000000):
        filelist8.append(list[j])

これは醜いです。上記のコードを 1 行または 2 行で記述する方法はありますか? 明らかに、文字列を反復できますが、リストの名前は反復できません。(範囲 (0, 9) の m に対して filelist[m] を繰り返すことはできません)。

ありがとう!

4

5 に答える 5

1

Python 2.7 を使用している場合は、変数を割り当てずに実際に map() 関数を使用できます。

>>> listdata = [0, 1, 2, 3, 4]
>>> list_o_lists = [ls0, ls1, ls2, ls3, ls4]
>>> map(lambda x, y: x.append(y), listdata, list_o_lists)

これが役に立てば幸いです。他の回答よりも少し簡単だと思いました。

于 2016-06-19T10:22:28.430 に答える
0

リストのリストが1つあるこのソリューション

filelists = []

list = [[1,3,2,6,5,7,6],[3,5,7,8,5,5,4]]

for i in range(8):
    filelists.append([])
    for j in range(0, len(list)):
        if (int(list[j][4]) == i or int(list[j][-4]) == 41601000000):
            print 'added'
            filelists[i-1].append(list[j])

結果は

>>> filelists
[[], [], [], [], [[1, 3, 2, 6, 5, 7, 6], [3, 5, 7, 8, 5, 5, 4]], [], [], []]
于 2013-05-01T22:05:03.690 に答える
-2
filelist = [[] for _ in range(9)]
for j, item in enumerate(item_list):
    for i in range(9):
        if (int(item[4])==i or
            int(item[-4])==int('4160{}000000'/format(i+1))
        ):
            filelist[i].append(j)
            break
于 2013-05-01T21:47:44.667 に答える