Python for 循环中的变量赋值

2023-11-27

我知道在Python中,常规的C++风格的变量赋值被对东西的引用所取代,即

a=[1,2,3]
b=a
a.append(4)
print(b)       #gives [1,2,3,4]
print(a)       #gives [1,2,3,4]

但我仍然很困惑为什么基本类型会出现类似的情况,例如。整数的工作方式不同吗?

a=1
b=a
a+=1
print(b)          # gives 1
print(a)          # gives 2

但是等等,当我们考虑循环时,它会变得更加混乱!

li=[1,2,3]
for x in li:
    x+=1
print(li)     #gives [1,2,3]

这是我所期望的,但是如果我们这样做会发生什么:

a,b,c=1,2,3
li=[a,b,c]
for x in li:
    x+=1
print(li)        #gives [1,2,3]

也许我的问题应该是如何循环遍历整数列表并在没有 map() 的情况下更改它们,因为我需要其中的 if 语句。我唯一能想到的就是使用

for x in range(len(li)):
    Do stuff to li[x]

正在将整数打包在一个元素列表中。但一定有更好的方法。


嗯,你需要考虑一下mutable and 不可变的 type.

对于列表来说,它是可变的。 对于整数来说,它是不可变的,这意味着如果更改它,您将引用一个新对象。什么时候a+=1 被执行,a将被分配一个新对象,但是b仍然指同一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python for 循环中的变量赋值 的相关文章

  • ptb_word_lm中batch_size的含义(tensorflow的LSTM模型)

    我是张量流的新手 我现在对它的含义有点困惑batch size 众所周知 其含义是batch size是每批次的样本数 但是根据中的代码ptb word lm 似乎不是 读者 py data len tf size raw data the
  • scikit-learn LinearRegression 的意外交叉验证分数

    我正在尝试学习使用 scikit learn 来完成一些基本的统计学习任务 我认为我已经成功创建了适合我的数据的线性回归模型 X train X test y train y test cross validation train test
  • pandas:使用运算符链接过滤 DataFrame 的行

    大多数业务在pandas可以通过操作符链接来完成 groupby aggregate apply等 但我发现过滤行的唯一方法是通过普通的括号索引 df filtered df df column value 这没有吸引力 因为它需要我分配d
  • 在python中浏览ftp目录

    我正在尝试使用 ftplib 使用 Python 3 从 ftp 服务器下载多个文件夹 我有一个文件夹名称列表 它们都位于文件夹 root 中 问题是我不知道如何浏览它们 当我使用cwd我可以进入更深的目录 但是如何再次起来呢 我正在尝试得
  • 如何计算具有较大中间值的总和

    我想计算 for n m两个值都是 1000 以内的整数 最终结果是一个不大于 1000 的数字n但中间值对于 python 来说太大了 无法处理 你怎么解决这个问题 我将函数定义如下 from scipy misc import comb
  • 如何消除 matplotlib 轴的相对偏移

    当我尝试对具有足够大数字的范围进行绘图时 我得到一个所有刻度都有相对偏移的轴 例如 plot 1000 1001 1002 1 2 3 我在横坐标轴上得到这些刻度 0 0 0 5 1 0 1 5 2 0 1e3 问题是如何删除 1e3并得到
  • 类型错误:无法连接“str”和“instance”对象(python urllib)

    写一个python程序 我在使用时遇到了这个错误urllib urlopen功能 Traceback most recent call last File ChurchScraper py line 58 in
  • 如何在函数和循环中使用 data.table?

    在评估效用时data table vs dplyr 一个关键因素是在函数和循环中使用它的能力 为此 我修改了本文中使用的代码片段 data table 与 dplyr 一个可以做得很好而另一个不能做或做得很差吗 https stackove
  • seaborn 未在定义的子图中绘制

    我正在尝试用这段代码并排绘制两个图表 fig ax1 ax2 plt subplots 1 2 sns displot x X train Age hue y train ax ax1 sns displot x X train Fare
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • Django 自定义查询集过滤器

    在 Django 中 是否有一种标准方法可以为查询集编写复杂的自定义过滤器 就像我能写的一样 MyClass objects all filter field val 我想做这样的事情 MyClass objects all filter
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • os.path.expanduser("~") 的替代方案?

    在Python 2 7 x中 os path expanduser Unicode 已损坏 这意味着如果 的扩展中包含非 ASCII 字符 则会出现异常 http bugs python org issue13207 http bugs p
  • Django 1.6:如何在视图中访问静态文件

    我已经尝试过解决方案here https stackoverflow com questions 11721818 django get the static files url in view这对我不起作用 我正在为 Python 创建一
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • python 中的优化标准化

    在优化过程中 对输入参数进行归一化 使它们处于同一数量级 通常会很有帮助 这样收敛效果会更好 例如 如果我们想要最小化 f x 而合理的近似值是 x0 1e3 1e 4 则将 x0 0 和 x0 1 归一化到大约相同的数量级可能会有所帮助
  • 带有 graphviz_layout 的水平树

    在Python中 使用networkx 我可以用以下方法绘制垂直树 g nx balanced tree 2 4 pos nx graphviz layout g prog dot nx draw g pos labels b all no
  • Mac 上的 PythonXY?

    如何在 Mac OS X Lion 上安装 Python 我开始了 它应该能够通过 macports 但无论如何我找不到 mac ports 网站上所述的端口 pythonXY 我对 MAC 和 pythonXY 都不太了解 但在 pyth
  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截

随机推荐

  • 从 gevent-subprocess 获取实时标准输出?

    我试图通过 POPEN 立即获取进程的标准输出 使用 gevent 1 0 readline 和 read 仍然会阻塞进程并等待进程完成 有什么线索吗 是的 我到处寻找一个简单的解决方案 没有线程它必须是可能的 对吗 import geve
  • Isabelle/HOL 验证器核心

    Question Isabelle HOL验证器的核心算法是什么 我正在寻找方案元循环评估器级别的东西 澄清 我只对Verifier 而不是自动定理证明的策略 Context 我想从头开始实现一个简单的证明验证器 纯粹出于教育原因 而不是用
  • 使用 Chrome API 时未检查runtime.lastError

    I use chrome fileSystem我的应用程序中用于打开文件的 API 当我点击Cancel文件选择器对话框的按钮时 出现错误 未选中runtime lastError在跑步的时候fileSystem chooseEntry 用
  • 使用GSON读写数据

    我正在努力寻找一个关于如何使用 GSON 在我的 Android 应用程序中读取和写入数据的好例子 有人可以向我展示或指出一个很好的例子吗 我用它来保持活动之间的数据持久性 我的教授举了这个例子来写作 Vector v new Vector
  • T-SQL:如何仅更新日期时间字段的日期部分?

    在 SQL Server 2008 中 我只需要更新日期时间字段的日期部分 在我的存储过程中 我收到日期时间格式的新日期 我必须从这个参数中提取日期 对时间不感兴趣 并更新现有值日期部分 我怎样才能做到这一点 一种方法是将日期之间的天数差异
  • 如何使用 AJAX 和 jQuery 发布 django 表单

    我已经检查了大量关于 django AJAX 表单的教程 但是每个教程都告诉您一种实现方法 没有一个是简单的 而且我有点困惑 因为我从未使用过 AJAX 我有一个名为 note 的模型 它的模型表单 在模板内 每次 note 元素发送 st
  • 在 JavaScript 中,如何等待动态注入的脚本加载后再开始使用它们?

    不使用任何外部库如何在使用脚本之前等待脚本加载 就我而言 我使用以下方式加载脚本 function w d t s e r e d createElement o r d getElementsByTagName o 0 e async 1
  • 错误:在最新检查期间无法捕获任务“transformClassesWithDexForDebug”的输出文件快照

    我是 Android 应用程序开发新手 试图构建一个简单的界面 但遇到了这个错误 我该如何解决它 整个错误声明是这样的 错误 在最新检查期间无法捕获任务 transformClassesWithDexForDebug 的输出文件快照 jav
  • 主干视图继承

    我正在尝试为对象浏览器编写一个 Backbone 视图 该视图旨在在具有不同对象类型和略有不同操作的多个地方实现 我尝试简单地扩展浏览器中的主干视图 然后在我的实现中扩展浏览器 但这给我留下了一些共享的属性 这是不期望的效果 因为每次创建浏
  • JSON.stringify() 值作为数字?

    我在用JSON stringify 在 HTML 上
  • 如何在所有元素上用“js”替换“no-js”类名? [复制]

    这个问题在这里已经有答案了 我想做的是获取具有类名的元素no js并将其替换为js 我不知道该怎么做 我尝试谷歌搜索但找不到任何东西 所以有人知道该怎么做吗 我的目标是让菜单在单击时显示下拉导航 但如果禁用 JavaScript 我希望它在
  • Kadane算法中如何返回最大子数组?

    public class Kadane double maxSubarray double a double max so far 0 double max ending here 0 for int i 0 i lt a length i
  • 将元素添加到状态 React

    我已经有了这样的状态 this setState conversation div conversation map element gt if element id this props id return div div div div
  • 旧应用程序的 PAM 身份验证

    我有一个遗留应用程序 它通过网络异步接收用户名 密码请求 由于我已经将用户名和密码存储为变量 那么在 Linux Debian 6 上使用 PAM 进行身份验证的最佳方法是什么 我尝试编写自己的对话函数 但我不确定将密码输入其中的最佳方法
  • YouTube 链接的正则表达式

    是否有人有一个正则表达式 可以从 几乎 所有可能的 Youtube 链接方式获取 Youtube 视频 非嵌入对象 的链接 我认为这是一个非常常见的问题 并且我确信有很多方法可以将其联系起来 起点是 http www youtube com
  • 修改 String 的 List 迭代

    我无法以这种方式修改列表的元素 for String s list s x s 执行后此列表中的代码元素未更改 如何用最简单的方式通过List实现modyfing的迭代 Since String对象是不可变的 您无法更改正在迭代的值 此外
  • 如何通过 TFS API 获取最新的变更集编号

    如何通过 TFS API 获取最新的变更集编号 你能给我举个例子吗 干得好 TeamProjectPicker tpp new TeamProjectPicker TeamProjectPickerMode SingleProject tr
  • jqGrid:如何在不同页面上使用多选

    简单的问题 很难找到答案 如果我尝试以编程方式选择一行 我会使用以下命令 grid jqGrid setSelection rowId 问题是它只选择当前可见页面上的行 如果rowId在另一页上 则不会被选择 更多信息 我的目标是在第一次加
  • C++函数计算字符串中的所有单词

    我在一次采访中被问到这个问题 显然这是一个简单的问题 但对我来说不是 而且仍然不明显 给定一个字符串 计算其中的所有单词 即使重复也没关系 只是总数 就像文本文件的字数一样 单词是由空格分隔的任何内容 标点符号并不重要 只要它是单词的一部分
  • Python for 循环中的变量赋值

    我知道在Python中 常规的C 风格的变量赋值被对东西的引用所取代 即 a 1 2 3 b a a append 4 print b gives 1 2 3 4 print a gives 1 2 3 4 但我仍然很困惑为什么基本类型会出