嘿,这可能很简单,但我被卡住了...我有3个不同的列表,我想以某种方式匹配,但我不能接缝以使其正确。 RDBID
是将字符串彼此分开的索引(ex 1636 19 02 2F has RDBID 1)
byte
是字符串具有(ex 1636=0 19=1 02=2 2F=3)
的顺序的nr,hex
是字符串我必须从中排序。我的问题是一些hex
字符串比其他字符串长,所以我得不到正确的输出,所以我需要以某种方式计算byte
然后我应该从{{1}中取出多少元素并且同时用RDBID ..
我尝试为每个列表分别单独hex
,然后将所有内容附加到新列表中,不起作用...尝试以相同的方式创建3 for loop
但是每个值都打印在单独的线...尝试搜索元素模式,但也没有工作......我完全被卡住了
nested loop
为什么我想以这种方式存储是因为我稍后会将它写入我的Access Sql服务器 所以现在我要求一些帮助,谢谢
答案 0 :(得分:1)
使用以下代码,您可以获得所期望的内容:
RDBID = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
byte = (0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6)
hex = ('1636', '19', '02', '2F', '1637', '19', '02', '2F', '1631', '19', '02', '2F', '1637', '19', '04', '0A', '1B', '47', 'FF', '1637', '19', '04', '06', '07', '68', 'FF', '1637', '19', '04', '06', '0A', '82', 'FF', '1637', '19', '04', '0A', '78', '56', 'FF','1637', '19', '04', '0A', '78', '56', 'FF', '1637', '19', '04', '0A', '1B', '08', 'FF', '1637', '19', '04', '0A', '1B', '81', 'FF')
zipByteHex = zip(byte,hex)
result = list()
i = -1
for bh in zipByteHex:
if bh[0]==0:
i+=1
result.append((RDBID[i],)+bh)
结果如下:
>>> result
[(1, 0, '1636'),
(1, 1, '19'),
(1, 2, '02'),
(1, 3, '2F'),
(2, 0, '1637'),
(2, 1, '19'),
(2, 2, '02'),
(2, 3, '2F'),
(3, 0, '1631'),
(3, 1, '19'),
(3, 2, '02'),
(3, 3, '2F'),
(4, 0, '1637'),
(4, 1, '19'),
(4, 2, '04'),
(4, 3, '0A'),
(4, 4, '1B'),
(4, 5, '47'),
(4, 6, 'FF'),
(5, 0, '1637'),
(5, 1, '19'),
(5, 2, '04'),
(5, 3, '06'),
(5, 4, '07'),
(5, 5, '68'),
(5, 6, 'FF'),
(6, 0, '1637'),
(6, 1, '19'),
(6, 2, '04'),
(6, 3, '06'),
(6, 4, '0A'),
(6, 5, '82'),
(6, 6, 'FF'),
(7, 0, '1637'),
(7, 1, '19'),
(7, 2, '04'),
(7, 3, '0A'),
(7, 4, '78'),
(7, 5, '56'),
(7, 6, 'FF'),
(8, 0, '1637'),
(8, 1, '19'),
(8, 2, '04'),
(8, 3, '0A'),
(8, 4, '78'),
(8, 5, '56'),
(8, 6, 'FF'),
(9, 0, '1637'),
(9, 1, '19'),
(9, 2, '04'),
(9, 3, '0A'),
(9, 4, '1B'),
(9, 5, '08'),
(9, 6, 'FF'),
(10, 0, '1637'),
(10, 1, '19'),
(10, 2, '04'),
(10, 3, '0A'),
(10, 4, '1B'),
(10, 5, '81'),
(10, 6, 'FF')]
zip
函数做了一些工作,避免你再做一次额外的循环。
答案 1 :(得分:0)
似乎您提供的信息很少,只有hex
变量中包含任何有用的数据。那么,为什么不是这样的呢?
RDBID = 1
_byte = 0
for s in hex:
print (RDBID, _byte, s)
if byte >= 3:
byte = 0
RDBID += 1
else:
byte += 1