我的数据是字符串。我有一个for循环来捕获所有数据并放入元组。我使用元组的原因是,我希望能够访问这样的数据,
tupOfTuple[1][0:4]#accessing x=1(line 1), elements 0-4.
这是我目前的代码,
while (deltaT < 80):
deltaT = time() - start_time
buf = create_string_buffer("\x22\x0F\x61", 77)
res = ldv_read( handle, buf, len(buf))
dataStr = [""]
colTup = ()
if (res == 0):
print "\n"
resZeroCount = resZeroCount + 1
for c in buf.raw:
dataStr = hex(ord(c))[2:].zfill(2),
#Figure out the data type, for debug
#print type(dataStr)
colTup = colTup + dataStr
print 'adding the lines with data into a another tuple'
rowTup = rowTup + colTup
print 'final tuple, this is a tuple of tuples'
for item in rowTup:
print item,
print 'line 3 is, element 0'
print rowTup[3][0]
在显示“print rowTup [1] [0]”的行中,我收到以下错误,
"IndexError: tuple index out of range".
我的rowTup应该是这样的,
18 23 43 srgrsdg 23 23 sdrfg
fd we 32 fgsfs 23 34 12
因此对于rowTup[1][0]
,我期待看到"fd"
。这是在Win7上。有人可以告诉我这里我做错了什么吗?我应该尝试使用二维数组吗?
答案 0 :(得分:1)
如果dataStr
是元组,则可以通过
colTup = colTup + (dataStr,)
答案 1 :(得分:1)
colTup = colTup + dataStr
[...]
rowTup = rowTup + colTup
当你将两个元组一起添加时,它会合并它们,它不会创建一个元组元组。如果rowTup是(1,2,3)并且colTup是(4,5,6),那么就像你一样将它们加在一起会产生一个具有值(1,2,3,4,5,6)的新元组,并使用这个新元组覆盖rowTup。
由于你如何将这些内容添加到一起,所有你拥有的只是一个巨大的项目元组,而不是多维的(也是你为什么会出现超出范围的错误)。
您可以通过将元组添加为单个元组来解决此问题并继续使用元组:rowTup = (rowTup,) + (colTup,)
。但是,让我们一起丢弃元组。您将它们用于更适合列表的内容(主要是需要更改的数据)。
使用列表,使用append选项可以更轻松地获得所需的功能。它的行为是:
>>> a = []
>>> a.append(1)
>>> a.append(2)
>>> print(a)
[1, 2]
>>> b = []
>>> b.append(3)
>>> b.append(4)
>>> print(b)
[3, 4]
>>> c = []
>>> c.append(a)
>>> c.append(b)
>>> print(c)
[[1, 2], [3, 4]]
而且,你有一个多维列表。访问c[0]
会返回[1, 2]
,并继续c[0][0]
返回1
。
答案 2 :(得分:0)
你可以制作那种索引基础,但你可能希望用列表来做。这是因为元组是不可变的(无法更改),因此当您编写类似
的内容时,实际上您会复制所有以前的值rowTup = rowTup + colTup
不要这样做。使用列表,您可以按添加条目
a = []
a.append(1)
a.append(2)
产生一个列表[1,2]。
至于为什么它超出范围可以,正如我所看到的,只是因为其中一个循环在尝试执行rowTup [0]之前没有转到3(或0) [3]
编辑:也。作为次要的事情,你的一些印刷陈述应该是评论。你应该这样使用它们
# This is a comment for the coder (ie. yourself).
# Variable a is here set and printed.
a = 2
print "Hello program user. This is a message for you. a =", a
EDIT2:您可以在Python中轻松查看元组的内容。只需写下
print rowTup