python3,如何在列表列表中乘以元素

时间:2015-04-21 10:10:25

标签: list function python-3.x

早上好!我有一个带bug的函数,以下函数

def frequency(couple2, pair_no_change, fq):
updated_pairs = list(list())
for pair in couple2[0:5]:
    if pair != pair_no_change:
        pair[0] *= fq
        pair[1] *= fq
        updated_pairs.append([pair[0], pair[1]])
    else:
        continue
return updated_pairs

用于:

for x in sorted_couple[0:78]:
    c = randrange(78)
    couple2.append(sorted_couple[c])
updated_pairs = frequency(couple2, pair_no_change, fq)

for t in updated_pairs:
    for i ,j in zip(list(t[0]), list(t[1])):
        #print ([i,j])
        couple.append([i,j])

并返回名为updated_pa​​irs的列表(list())。输出是:

[['CCCCCCCCCC', 'SSSSSSSSSS'], ['LLLLLLLLLL', 'AAAAAAAAAA'], ['FFFFFFFFFF', 'YYYYYYYYYY'], ['NNNNNNNNNN', 'LLLLLLLLLL'], ['GGGGGGGGGG', 'NNNNNNNNNN']]
问题是当两个相同的夫妻被随机选择时,输出分歧给我一些类似的东西:

[['GGGGGGGGGG', 'NNNNNNNNNN'], ['PPPPPPPPPP', 'MMMMMMMMMM'], ['KKKKKKKKKK', 'DDDDDDDDDD'], ['DDDDDDDDDD', 'YYYYYYYYYY'], ['DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD', 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY']]

我试图从昨天开始解决这个问题......任何帮助都会很棒!谢谢

1 个答案:

答案 0 :(得分:1)

执行pair[0] *= fq之类的内容更改值,因此如果稍后再次使用该值,则会有所不同。为了安全起见,最好做pair0 = pair[0]*fq之类的事情,并使用新的pair0变量进行追加。

所以改成它:

def frequency(couple2, pair_no_change, fq):
    updated_pairs = list(list())
    for pair in couple2[0:5]:
        if pair != pair_no_change:
            pair0 = pair[0] * fq
            pair1 = pair[1] * fq
            updated_pairs.append([pair0, pair1])
        else:
            continue
    return updated_pairs

或者更好的是:

def frequency(couple2, pair_no_change, fq):
    updated_pairs = list(list())
    for pair0, pair1 in couple2[0:5]:
        if [pair0, pair1] == pair_no_change:
            continue
        updated_pairs.append([pair0*fq, pair1*fq])
    return updated_pairs