我想知道python元组是如何变得不可变的,也就是说它们是如何在内存中实现的,以至于我们不能改变它们的值?
python in general被实现为一个动态数组,它的值可以通过直接访问索引和分配不同的值在特定的索引上进行修改。元组是不可变的,但是什么条件使它们不可变呢?为什么我们不能改变它们的值,就像内存元素被锁在列表上的附加条件,使其成为元组一样?
也是
字符串是不可变的,所以它是不可变的,因为它的状态不能改变。字符串p总是表示p。但元组是怎么回事?
上面的任何定义都是非常笼统的,当我说python list is implemented as a dynamic array时,我不确定p
我有一个Python扩展模块,它创建一个元组作为另一个对象的属性,并在tuple中设置项。每当我用Python执行这个模块时,我都会得到错误的SystemError: bad argument to internal function。
在阅读了PyTuple的文档并调试了几个小时之后,我仍然搞不清楚到底是怎么回事。通过调试器运行我的程序表明,这个问题发生在Python解释器内的库调用中。所以,最后,我看了Python源代码,最后我意识到了这个问题。PyTuple_SetItem函数有一个有趣的限制,我不知道,也找不到明确的文档。
以下是Python源代码中的重要函数(为清晰性而编辑):
in
我有一个基本的Python加密程序。这个程序差不多已经完成了,但是由于Python构建我的变量的方式,我总是会出错。
下面是我想要做的事情的一个例子:
A = 4
B = 2
C = 3
for i in range (3):
A=A, ((B*2) + C)
A = (((4, 7), 7), 7)
我想要A输出4,7,7,7,当它循环时,它把数字加到末尾,而不是把它们加在一起。这里的问题是,无论出于什么原因,我都不能针对特定的值,例如,如果我这样做了
print (A[2])
输出将是一个错误
Traceback (most recent call last):
File
我对Python 3.4.2中的format方法有一个问题。显示以下错误:
Traceback (most recent call last):
Python Shell, prompt 2, line 3
builtins.IndexError: tuple index out of range
代码:
A = "{0}={1}"
B = ("str", "string")
C = A.format(B)
print (C)
元组包含索引为0和1的两个字符串,不应显示此错误。
这根绳子怎么了?我无法理解为什么它说格式字符串没有足够的参数。我对Python很陌生,我只是想办法解决问题。
编辑:这与建议的另一个问题不一样。另一个是试图做一些疯狂的数组的事情,我甚至没有进入。我只需要了解元组的基本概念以及字符串格式是如何工作的。
data = ["John", 23, "United States", "United Kingdom"]
format_string = "Your name is %s and you are %s years old. You were born in %s and
我使用python的多线程模块编写了一个小型Python脚本。
threading.Thread调用的目标函数包含2个参数(self和另一个值)。但是,即使只给出两个参数,我也总是得到以下错误TypeError: example() takes 2 positional arguments but 3 were given。
import threading
import random
num=random.randint(1,999)
threadN=10 #number of processes
a="11" #testing value
class ExampleCla
我正在尝试使用python进行一些数据操作和分析。我是python新手,在使用csv函数库加载数据时遇到了一些问题。我的代码:
import csv
out = open("data1.csv","rb")
data = csv.reader(out)
data = [row for row in data]
x = data[:,0]
生成以下错误:
Traceback (most recent call last):
File "/home/matthew/NumericalAnalysis.py", line 12, in <m
我在python中试验tuple时,偶然发现了这个问题。 t=tuple("2",) # works 但是 t=tuple(1,) # fails with error TypeError: 'int' object is not iterable 鉴于 t=(1,) # works 有人能解释一下为什么会这样吗?
(0,)==(0)
False
在(0,)中,什么是意味着使用这种元组而不是常规元组(0)是有用的?
我认为这可能意味着索引1中的项为零,但事实并非如此:
(0,)[1]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: tuple index out of range
此外,如果我希望(0,1,)变成(0,1),如何操作它?
编辑:
也许我过分简化了用于我的问题的例子,这是我最初的问题:
(('Suggest', 1.
我指的是这个问题,特别是@David Robinson和@mgilson对第一个答案的评论:
最初的问题是对每个tuble的第二个值求和:
structure = [('a', 1), ('b', 3), ('c', 2)]
第一个答案:
sum(n for _, n in structure)
第二个答案:
sum(x[1] for x in structure)
根据讨论,第一个答案是快50%。
一旦我弄清楚了第一个答案是做什么的(来自Perl,我在谷歌上搜索了python中的特殊_变量的意思),我想知道为什么看起来像纯子集任务的东西(只获取