当前位置: 首页 > 面试题库 >

(还有)列出别名难题

闻人嘉悦
2023-03-14
问题内容

我以为我知道了整个列表别名,但是后来我发现:

    l = [1, 2, 3, 4]
    for i in l:
        i = 0
    print(l)

结果是:

    [1, 2, 3, 4]

到现在为止还挺好。

但是,当我尝试这样做时:

    l = [[1, 2], [3, 4], [5, 6]]
    for i in l:
        i[0] = 0

我懂了

    [[0, 2], [0, 4], [0, 5]]

为什么是这样?

这与走样深度有关系吗?


问题答案:

i = 0与完全不同i[0] = 0

伊格纳西奥(Ignacio)简洁正确地解释了原因。因此,我将尝试用一个更简单的词来解释这里实际发生的情况。

在第一种情况下,i只是一个标签指向某个对象(列表中的成员之一)。 i = 0更改对其他对象的引用,以便i现在引用integer
0。该列表未修改,因为您从未要求修改l[0]或的任何元素l,而您只修改了i

在第二种情况下,i它也只是指向列表中成员之一的名称。那部分没有什么不同。但是,i[0]现在正在调用.__getitem__(0)列表成员之一。同样,i[0] = 'other'会喜欢这样做i.__setitem__(0, 'other')。它并不是i像常规赋值语句那样简单地指向其他对象,实际上是在改变对象i

一个简单的想法就是,Python中的名称始终只是对象的标签。作用域或名称空间就像将名称映射到对象的字典一样。



 类似资料:
  • 我需要加密和解密一些列这样的。 这句话的意思是: 当我使用PersonRepository.findOneByParentId(10L)时;并查看日志 sql 是 这句话的意思是: 此错误消息: 这句话的意思是: 为什么@ColumnTransformer不添加列“name”的表别名,我该怎么办

  • 问题内容: 我想我了解Anonymous类的基础知识,但我想澄清一些内容。当我有这样的语法时 如果匿名类实际上是类A的内部类,如第一个示例所示:理论上,语义正确吗? 到底会发生什么?我认为在编译Java文件时,将为匿名类创建一个.class文件,以便可以对其进行引用(但我找不到它)。当实例化A对象时,它创建一个按钮对象,然后btn调用addActionListener()方法,该方法实际上将类似A

  • 问题内容: 是否有Linux命令将列出此终端会话的所有可用命令和别名? 就像您键入“ a”并按下制表符一样,但是对于字母的每个字母。或运行“别名”,但也返回命令。 为什么?我想运行以下命令,看看命令是否可用: 问题答案: 您可以使用内置的bash(1) 将列出您可以运行的所有命令。 将列出您可以运行的所有别名。 将列出您可以运行的所有内置插件。 将列出您可以运行的所有关键字。 将列出您可以运行的所

  • 问题内容: 假设我有一个类似的查询 也许两个表都具有相同的列名。所以我虽然很高兴通过访问数据 但这事与愿违,我一无所获。我阅读了API,但是他们并没有真正谈论这种情况。这样的功能供应商依赖吗? 问题答案: JDBC将仅通过查询中指定的名称来命名列-它不知道表名等。 您有两种选择: 选项1: 在查询中使用不同的名称命名列,即 然后在您的Java代码中参考列别名: 选项2: 在对JDBC API的调用

  • 问题内容: 我正在创建一个使用两次来自同一表的数据的视图。结果,相同的列名出现两次。 因此,我需要给这些列起别名。如果我要这样做,我会写成: 但这是行不通的。谢谢你的帮助! 编辑: 这是我实际上得到的数据: 这是我想获取的数据(同时仍使用): 问题答案: 您不能使用别名。别名可用于单个列。 您必须改为为每列加上别名。 因此,不幸的是,如果您有很多列,则需要执行以下操作:

  • 问题内容: 我想按列别名对sql语句进行分组。实质上,我希望以下内容在逻辑上能够正常运行,但不允许按使用as创建的列进行分组。(无效的列名)。有人提示吗? 问题答案: 对于立即出现的分组问题,您需要使用相同的表达式对新列进行分组或对新列进行计算,或者从派生表中使用它。 另一方面,如果不需要,则不应使用。

  • 如果为false,则检查第二次,依此类推 如何做到这一点?

  • 问题内容: 我知道 将列出表中的所有列,但我有兴趣按字母顺序列出这些列。 说,我有三列,“姓名”,“年龄”和“性别”。 我希望这些列以以下格式组织 是否可以使用SQL做到这一点? 问题答案: 是的,没有:-) SQL本身并不关心列的排列顺序,但是,如果要使用的话: 您会发现它们可能按此顺序出现(尽管我不确定SQL标准是否要求这样做)。 现在您可能 不想 这样做,但有时生活不公平:-) 您还可以使用