我有一个自己不能解决的问题。
我在数组中有200个值。每个值都需要一个乘数。所以我想要的是将每个值分配给带有计数器的字符串。例如:
w1 = 22
w2 = 44
w3 = 42
w4 = 78
所以我尝试的是:
count = 1
'w' + count = np.random.randn()
但是错误是:SyntaxError:无法分配给运算符
我在做什么错!!
编辑: 在Joran Beasley的第一个制作人之后,我的代码更改为:
weights = {}
count = 1
while (count <= len(data[0])):
weights['w%s'%count] = 0
count += 1
print(weights)
但是当我打印数据时,我看到了一个非常奇怪的命令。这是我得到的样本:
{'w75': 0, 'w74': 0, 'w77': 0, 'w76': 0, 'w71': 0, 'w70': 0, 'w73': 0, 'w72': 0, 'w79': 0, 'w78': 0, 'w234': 0
如您所见,有一些数字以正确的顺序排列,但大多数数字是随机放置的。这正常吗?
答案 0 :(得分:0)
您需要使用字典
data = {}
count = 1
data['w%s'%count] = 22
print(data)
如果您真的希望变量不在字典中,则可以使用locals()
或globals()
字典,但我不建议这样做
globals()['w%s'%count] = 22
print(w1)
或者,如果您觉得自己的生活非常危险,可以使用exec(请注意,这不是一个好主意!)
exec("w%s = 23"%count)
print(w1)
答案 1 :(得分:0)
'w' + count = np.random.randn()
在操作的赋值(左侧)上有一个运算符(+),这在Python中是禁止的
答案 2 :(得分:0)
您的错误是由于您的$ brew unlink python
$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/e128fa1bce3377de32cbf11bd8e46f7334dfd7a6/Formula/python.rb
$ brew switch python 3.6.5
$ pip install tensorflow
号(赋值)在加号(基本算术运算符)的右侧而导致的。您不能为正在执行操作的对象分配值。
例如,如果我尝试运行代码
=
我会得到相同的错误错误
>>> 'hello' + '123' = 'world'
如果您要动态创建变量名(如您所描述的(即 File "<stdin>", line 1
SyntaxError: can't assign to operator
,w1
等),那么阅读this question的答案可能会有所帮助,因为像字典这样的数据结构非常适合以这种方式存储信息。
答案 3 :(得分:0)
'w' + count = np.random.randn()
这是您的问题所在。 Python不了解您要为变量w1分配值,而是认为您正在尝试将值转换为其他值,这是不可能的。
您尝试执行的操作完全符合逻辑,但不起作用-即使您创建字符串“ w1”,Python也不会将其与相同名称的变量关联。
您最好的选择可能是使用以“ w1”为键的字典。
答案 4 :(得分:0)
据我所知,您要执行的操作在python中是不可能的。您可以将每个值放在列表中:
w = []
for I in range(10):
w.append(I * 22)
则w [0]等于0,w [1]等于22,依此类推。 或者您可以使用字典。设置与列表选项非常相似。