Python动态赋值报Cannot assign to literal错误如何解决
报错根因
- 你遇到的
Cannot assign to literal报错是Python语法限制导致:你试图给f-string生成的字符串字面量直接赋值,Python不允许将字符串作为变量名来接收赋值 - 你的append操作逻辑颠倒:你想把t-SNE运算结果存入
tsne_results列表,代码里却写反了调用主体和参数,会进一步触发报错 - 不需要单独创建
tsne_results_50这类带后缀的独立变量,直接把运算结果存入列表/字典即可满足需求
修复方案
方案1:直接存入列表(最符合你要生成tsne_results列表的需求)
perplexity_values = [5, 30, 50, 100] tsne_results = [] for value in perplexity_values: tsne = TSNE(n_components=2, verbose=1, perplexity=value, n_iter=250) res = tsne.fit_transform(X) tsne_results.append(res)
运行后tsne_results的元素顺序和perplexity_values一一对应,分别是perplexity为5、30、50、100时的运算结果。
方案2:用字典存储(方便按perplexity值快速调取对应结果)
如果需要通过类似tsne_results_50的名称直接取结果,可以用字典实现:
perplexity_values = [5, 30, 50, 100] tsne_results_dict = {} tsne_results = [] for value in perplexity_values: tsne = TSNE(n_components=2, verbose=1, perplexity=value, n_iter=250) res = tsne.fit_transform(X) tsne_results_dict[f'tsne_results_{value}'] = res tsne_results.append(res)
后续可以通过tsne_results_dict['tsne_results_50']直接调取对应perplexity的结果,同时tsne_results列表也符合你最初的需求。
内容的提问来源于stack exchange,提问作者THEODOROPOULOS DIMITRIS
相关产品推荐
相关产品推荐

