【发布时间】:2020-09-19 11:04:55
【问题描述】:
我有点新,我正在研究登录机制。所有用户名和密码都存储在 [[username,passwort],[username,password]] 之类的列表中,然后以如下格式写入文本文件: 用户名 密码
for example: Julia
x1234
Nick
doggoXX123
and so on
当程序启动时,我想将它们放回用户名和密码列表中。 为此,我编写了一个名为 read_from_file() 的函数,该函数从列表(称为 user_data)中的文本文件(用户名和密码下方)中获取两行,然后将该列表添加到用户的主列表(称为 user_list) [用户名,密码]->(主列表:)[[用户名],[密码]] 代码如下:
def read_from_file():
user_list = []
f = open("userdata.txt", "r")
user_data = ["", ""]
line_counter = 0
for x in f:
user_data[line_counter] = x
line_counter += 1
print(line_counter)
if line_counter == 2:
print(user_list)
line_counter = 0
user_list.append(user_data)
现在我的问题是:当我将 user_data 附加到 user_list 时,第二次附加它时,附加到 user_list 的第一个列表也会发生变化:
user_list = [[Julia, x1234]]
-> for 循环第二次通过
user_list = [[尼克,doggoXX123],[尼克,doggoXX123]]
实际上应该是
user_list = [[Julia, x1234],[Nick, doggoXX123]]
尽管列表中的第一项应该是 [Julia, x1234]
那么我该如何阻止它改变呢?
现在它用一个名为 i 的 var 对其进行了测试并将其放入一个列表中,然后再次更改该 var 并将其第二次放入列表中,它按照我的想法工作:
def test():
list = []
i = 1
list.append(i)
i += 1
list.append(i)
print(list)
print(i)
输出是 [1,2] ; 2
正如预期的那样
现在为什么这不适用于列表? 为什么列表会改变而 var 不会?
【问题讨论】:
-
问题看起来像这里的问题:stackoverflow.com/questions/240178/…。请看看这是否回答了您关于行为的问题