【问题标题】:python3, how to multiply element in a list of listpython3,如何将列表中的元素相乘
【发布时间】:2015-04-21 10:10:24
【问题描述】:

早上好!我有一个有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']]

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

【问题讨论】:

  • Offtop:如果只需要前 5 个元素,为什么还要为 78 个元素制作 Couple2?
  • Offtop:从 Couple2 中删除 pair_no_change (甚至在传递 couple 时不包括)可能比 map *fqcouple2 的所有元素更好?跨度>

标签: list function python-3.x


【解决方案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

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多