相关疑难解决方法(0)

python:将字典附加到列表 - 我看到一个类似行为的指针

我在python解释器中尝试了以下内容:

>>>
>>> a = []
>>> b = {1:'one'}
>>> a.append(b)
>>> a
[{1: 'one'}]
>>> b[1] = 'ONE'
>>> a
[{1: 'ONE'}]
>>>
Run Code Online (Sandbox Code Playgroud)

这里,在将字典'b'附加到列表'a'之后,我正在改变字典'a'中与键1对应的值.不知怎的,这种变化也反映在列表中.当我将字典附加到列表中时,我不只是附加字典的值吗?看起来好像我已经将一个指向字典的指针附加到列表中,因此对字典的更改也会反映在列表中.

我不希望更改反映在列表中.我该怎么做?

感谢您的时间!

python dictionary list

59
推荐指数
2
解决办法
15万
查看次数

python上的列表总是添加相同的值

我在while循环中有以下代码.

if gender == 0 and len(men) < 51 :
    height = float((random.uniform(1.3, 1.9) + (random.randint(10, 20)/100.)).__format__('.2f'))
    weight = float((random.uniform(45, 100) * height).__format__('.2f'))
    attr['height'] = height 
    attr['weight'] = weight

    men.append(attr)
Run Code Online (Sandbox Code Playgroud)

所以这段代码总是给出一些随机高度和随机权重.但是outsite de loop(当它完成时).如果我这样做print men,我得到以下结果:

[{'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, {'weight': 76.64, 'height': 1.75}, …
Run Code Online (Sandbox Code Playgroud)

python list python-2.7

7
推荐指数
2
解决办法
6041
查看次数

为什么清除一个列表的列表会清除所有列表

在这段代码中,我将零添加到一个空列表中,然后当它包含 9 个零时,该列表将添加到另一个称为 board 的列表中,然后我清除 9 个零的行并再次重复该过程 9 次:

    row = []
    for i in range(9):
        for j in range(9):
            row.append('0')
        self.board.append(row)
        row.clear()
    print(board)
Run Code Online (Sandbox Code Playgroud)

经过一些打印后,我了解到在外循环结束之前,板包含所有 9 行 9 个零,但是当row.clear()最后一次执行时,它会清除所有零行,给我一个包含 9 个空列表的列表的结果,这当然不是我想要的,我知道如何解决它,但我不明白为什么当循环到达末尾时,所有内部零列表都被清除。

python

1
推荐指数
1
解决办法
54
查看次数

标签 统计

python ×3

list ×2

dictionary ×1

python-2.7 ×1