python - Incorrect element returned from list
问题描述
I am attempting to slice a list. When I iterate through the nested list one result has the correct elements corresponding to the index, the other result is one prior to the index number.
[[['LIN', '', 'GS', 'MERN09RO3/8', 'MF', 'MERCIER', 'ST', 'MERN09RO3/8'], ['DTM', '007', '20201025'], ['REF', '19', '', 'JAECKLE DISTRIBUTORS INC.'], ['PID', 'F', 'TRN', '', '', 'NOSING RED OAK 3/8 X 92'], ['PID', 'F', 'MAC', '', '', 'WOOMSN'], ['MEA', '', 'SU', '1.000', 'EA'], ['CTP', '', 'LPR', '112.000', '', 'EA'], ['G43', '003', '', 'INVENTORY'], ['SLN', '1', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8300M', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'NATURAL MATTE'], ['PID', 'F', '35', '', '', 'MARONO8300M'], ['DTM', '197', '20201019'], ['SLN', '2', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8312F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'GUNSTOCK SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8312F'], ['DTM', '197', '20201019'], ['SLN', '3', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8324F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'AUTUMN LEAF SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8324F'], ['DTM', '197', '20201019'], ['SLN', '4', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8386F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'BROOKLINE SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8386F'], ['DTM', '197', '20201019']], [['LIN', '', 'GS', 'MERP08N18', 'MF', 'MERCIER', 'ST', 'MERP08N18'], ['DTM', '007', '20201025'], ['REF', '19', '', 'JAECKLE DISTRIBUTORS INC.'], ['PID', 'F', 'TRN', '', '', 'PRO ENGINEERED RED OAK 3/8 X 3-1/4'], ['PID', 'F', 'MAC', '', '', 'WOOENP'], ['MEA', '', 'SW', '1.273', 'FP'], ['MEA', '', 'SU', '44.000', 'SF'], ['CTP', '', 'LPR', '4.390', '', 'SF'], ['G43', '003', '', 'INVENTORY'], ['SLN', '1', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8300B', 'UP', '77816797014', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'NATURAL MATTE-BRUSHED'], ['PID', 'F', '35', '', '', 'MEOPPA8300B'], ['PID', 'F', '08', '', '', 'MERMAROTHSS00M'], ['PID', 'F', '08', '', '', 'MERMAROQRSS00M'], ['DTM', '197', '20201023'], ['SLN', '2', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8380F', '', '', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'MOCASSIN PRO-FINISH'], ['PID', 'F', '35', '', '', 'MEOPPA8380F'], ['DTM', '197', '20201019'], ['SLN', '3', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8383F', 'UP', '77816795616', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'CONCRETE GREY PRO-FINISH'], ['PID', 'F', '35', '', '', 'MEOPPA8383F'], ['PID', 'F', '08', '', '', 'MERMARONO8383F'], ['PID', 'F', '08', '', '', 'MERMAROTM8383F'], ['PID', 'F', '08', '', '', 'MERMAROTHSS83F'], ['DTM', '197', '20201019']]]
This is the code used to iterate through the list. It looks for "CTP" and "G43" in the nested lists then indexes them.
x = 0
details = [[['LIN', '', 'GS', 'MERN09RO3/8', 'MF', 'MERCIER', 'ST', 'MERN09RO3/8'], ['DTM', '007', '20201025'], ['REF', '19', '', 'JAECKLE DISTRIBUTORS INC.'], ['PID', 'F', 'TRN', '', '', 'NOSING RED OAK 3/8 X 92'], ['PID', 'F', 'MAC', '', '', 'WOOMSN'], ['MEA', '', 'SU', '1.000', 'EA'], ['CTP', '', 'LPR', '112.000', '', 'EA'], ['G43', '003', '', 'INVENTORY'], ['SLN', '1', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8300M', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'NATURAL MATTE'], ['PID', 'F', '35', '', '', 'MARONO8300M'], ['DTM', '197', '20201019'], ['SLN', '2', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8312F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'GUNSTOCK SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8312F'], ['DTM', '197', '20201019'], ['SLN', '3', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8324F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'AUTUMN LEAF SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8324F'], ['DTM', '197', '20201019'], ['SLN', '4', '', 'O', '', '', '', '', '', 'SK', 'MERMARONO8386F', '', '', '', '', 'ST', 'MERN09RO3/8'], ['PID', 'F', '73', '', '', 'BROOKLINE SEMI-GLOSS'], ['PID', 'F', '35', '', '', 'MARONO8386F'], ['DTM', '197', '20201019']], [['LIN', '', 'GS', 'MERP08N18', 'MF', 'MERCIER', 'ST', 'MERP08N18'], ['DTM', '007', '20201025'], ['REF', '19', '', 'JAECKLE DISTRIBUTORS INC.'], ['PID', 'F', 'TRN', '', '', 'PRO ENGINEERED RED OAK 3/8 X 3-1/4'], ['PID', 'F', 'MAC', '', '', 'WOOENP'], ['MEA', '', 'SW', '1.273', 'FP'], ['MEA', '', 'SU', '44.000', 'SF'], ['CTP', '', 'LPR', '4.390', '', 'SF'], ['G43', '003', '', 'INVENTORY'], ['SLN', '1', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8300B', 'UP', '77816797014', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'NATURAL MATTE-BRUSHED'], ['PID', 'F', '35', '', '', 'MEOPPA8300B'], ['PID', 'F', '08', '', '', 'MERMAROTHSS00M'], ['PID', 'F', '08', '', '', 'MERMAROQRSS00M'], ['DTM', '197', '20201023'], ['SLN', '2', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8380F', '', '', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'MOCASSIN PRO-FINISH'], ['PID', 'F', '35', '', '', 'MEOPPA8380F'], ['DTM', '197', '20201019'], ['SLN', '3', '', 'O', '', '', '', '', '', 'SK', 'MERMEOPPA8383F', 'UP', '77816795616', '', '', 'ST', 'MERP08N18'], ['PID', 'F', '73', '', '', 'CONCRETE GREY PRO-FINISH'], ['PID', 'F', '35', '', '', 'MEOPPA8383F'], ['PID', 'F', '08', '', '', 'MERMARONO8383F'], ['PID', 'F', '08', '', '', 'MERMAROTM8383F'], ['PID', 'F', '08', '', '', 'MERMAROTHSS83F'], ['DTM', '197', '20201019']]]
index1 = []
loop2200 = []
while x < len(details):
y = 0
for identifier in details[x]:
if identifier[0] == "CTP":
index1.append(y)
if identifier[0] == "G43":
index1.append(y)
y += 1
loop2200.append(details[x][index1[0]:index1[1] + 1])
x += 1
for line in loop2200:
print(line)
print(index1)
The output of the above code is
[['CTP', '', 'LPR', '112.000', '', 'EA'], ['G43', '003', '', 'INVENTORY']]
[['MEA', '', 'SU', '44.000', 'SF'], ['CTP', '', 'LPR', '4.390', '', 'SF']]
[6, 7, 7, 8]
Once the indexes are stored in another list, I use that list to slice the original list. The output i would like to see is
[['CTP', '', 'LPR', '112.000', '', 'EA'], ['G43', '003', '', 'INVENTORY']]
[['CTP', '', 'LPR', '4.390', '', 'SF'], ['G43', '003', '', 'INVENTORY']]
解决方案
您总是附加到loop2200
using index1[0]
and index1[1]
,但新的索引被附加到index1
:将这些更改为index1[-2]
and index1[-1]
(即使用添加到的最后两个索引index1
),这将loop2200
正确更新。
推荐阅读
- javascript - 为什么样式和 javascripts 代码不适用于新添加的 html 内容
- c# - 如何更改原始选项卡式页面栏的样式(带有 xamarin.forms 的 android)?
- bash - 通过 ssh 执行脚本并将其 pid 存储在远程机器上的文件中
- excel - 尝试使用 Excel VBA 代码更改数据透视表的源时出错
- ios - iOS 共享扩展二进制文件被拒绝
- ios - UIButton 就像一个单选按钮
- python - 如何在没有拆分器的情况下拆分等长字符串并扩展数据框
- playframework - playframework会在一定时间后释放内存吗?
- couchdb - CouchDB Mango Query - 将值与数组项匹配
- r - 将列格式化为日期将列返回为“未知”