Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组中字符串项更新的理论问题_Python_String_Tuples - Fatal编程技术网

Python 元组中字符串项更新的理论问题

Python 元组中字符串项更新的理论问题,python,string,tuples,Python,String,Tuples,关于元组的理论问题。 如果我有一个从字符串构造的元组: tupl = ('Hello', 'World') 如果我想让所有字母的小写字母都使用相同的元组或 我应该创建一个新元组并复制当前元组的小写字符串吗 tupl = [string.lower() for string in tupl] 或: 元组是不可变的,这意味着它们不能被修改,只能被替换 在您的第一个代码片段中,实际上您正在创建一个列表,但为了示例起见,让我们将其设为一个元组: tupl = tuple(string.lower()

关于元组的理论问题。 如果我有一个从字符串构造的元组:

tupl = ('Hello', 'World')
如果我想让所有字母的小写字母都使用相同的元组或 我应该创建一个新元组并复制当前元组的小写字符串吗

tupl = [string.lower() for string in tupl]
或:


元组是不可变的,这意味着它们不能被修改,只能被替换

在您的第一个代码片段中,实际上您正在创建一个列表,但为了示例起见,让我们将其设为一个元组:

tupl = tuple(string.lower() for string in tupl)
如果在此行之前和之后运行idtupl,您将看到ID发生了变化,因为此行创建了一个新的元组,但将其分配给了相同的名称tupl。例如:

tupl = ('Hello', 'World')
old_id = id(tupl)
print(old_id)
tupl = tuple(string.lower() for string in tupl)
new_id = id(tupl)
print(new_id == old_id, new_id)
示例输出:

140562289770120
False 140562192307208

第二个代码段的唯一区别在于,它将新对象分配给一个新名称,而保留旧名称不变。

您创建的是一个列表,而不是元组。两者本质上是相同的。在这两种情况下,您都在创建一个新列表,而不是元组。不同之处在于,您正在更改第一个元组中与之关联的对象。字符串和元组都是不可变的,因此这实际上是一个新的元组,在任何情况下都是列表。唯一的区别是它绑定到旧名称或新名称。
140562289770120
False 140562192307208