我在RND'之后从列表中获取数字时遇到问题:
myList = [['1123-TDT', '10593917/5422', 'RND', '20.5', 'QWTQWGSAG', 'RND', '40'], ['1156-TDT', '51205915/6166', 'ASDWT', '111551', 'RND', '35']]
如果列表项中只有一个RND(myList [1]),我可以在RND之后得到数字。但如果有两个' em(myList [0]),则没有任何反应。
我的例子:
myList = [['1123-TDT', '10593917/5422', 'RND', '20.5', 'QWTQWGSAG', 'RND', '40'], ['1156-TDT', '51205915/6166', 'ASDWT', '111551', 'RND', '35']] listLen = len(myList) for x in range(listLen): if 'RND' in myList[x]: y = myList[x].index('RND') z = myList[x][y+1] print(z)
输出看起来像这样:
20.5 35
但我希望如此:
20.5 40 35
提前致谢!
答案 0 :(得分:2)
如果当前元素等于"RND"
,则需要访问子列表中的每个子列表和每个子元素,然后在当前元素之后的索引处获取元素:
print( [sub[ind] for sub in myList for ind, ele in enumerate(sub,1) if ele == "RND"])
['20.5', '40', '35']
使用两个普通循环:
# iterate over each sublist
for sub in myList:
# check every element in each sublist for "RND"
# if we find a match print the next element in the list
for ind, ele in enumerate(sub,1):
if ele == "RND":
print(sub[ind])
我们使用enumerate(sub,1)
,其中1是起始索引,因此当我们访问sub[ind]
时,如果我们使用0
的起始索引,我们将获得下一个元素而不是当前元素。
y = myList[x].index('RND')
只会获得第一次次。
如果您希望每个子列表在单行上打印输出,请使用end=" "
:
for sub in myList:
# check every element in each sublist for "RND"
# if we find a match print the next element in the list
for ind, ele in enumerate(sub,1):
if ele == "RND":
print(sub[ind],end=" ")
print()
20.5 40
35
答案 1 :(得分:1)
您需要遍历列表中的相应列表,以使用您的方法完成此操作。
也许尝试遍历每个列表的列表元素,检查列表元素是否等于RND
,并打印当前正在执行的以下索引值。
< br />您必须进行的唯一更改是遍历列表元素并使用条件语句查找RND
,而不是仅使用list.index
来确定RND
的索引。这对你来说是一个很好的练习。