如何在嵌套列表的范围内获取元素



刚开始学习python,我有这个任务,我需要在嵌套列表中做范围。

tlist = [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4], ['Zen', 'No', 90, 1]]

我想请求tlist[2]的最小值和最大值

low = int(input("Enter low")) #take this as 1
high = int(input("Enter High")) #take this as 50

这需要更新,当我再次调用列表时,它应该显示,并从列表中删除'zen'

tlist = [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4]]

您可以使用此代码。尝试遍历包含low和high条件的列表

tlist = [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4], ['Zen', 'No', 90, 1]]
low = int(input("Enter low")) #take this as 1
high = int(input("Enter High")) #take this as 50
tlist = [l for l in tlist if l[2]>=low and l[2]<=high]
print(tlist)

方法一:保持tlist不变,将结果保存到另一个列表

  • 遍历t_list
  • 中的每个内部列表
  • 访问每个内部列表中索引2处的第三个元素
  • 检查此元素是否在[low,high]范围内。
  • 如果是,将当前的内部列表添加到新列表中。

tlist = [['Foo', 'No', 80, 1], ['Bar', 'No', 90, 1], ['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4], ['Zen', 'No', 90, 1]] 
updated_list = []
low = 1
high = 50
for inner_list in tlist:
if inner_list[2] >= low and inner_list[2] <= high:
updated_list.append(inner_list)
print(updated_list)
# [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4]]

方法二:使用remove()直接修改tlist

tlist = [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4], ['Zen', 'No', 90, 1]]
low = 1
high = 50
for i in range(len(tlist)-1,-1,-1):
inner_list = tlist[i]
if inner_list[2] < low or inner_list[2] > high:
tlist.remove(inner_list)
print(tlist)
# [['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4]]

tlist = [['Foo', 'No', 80, 1], ['Bar', 'No', 90, 1], ['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4], ['Zen', 'No', 90, 1]]时,输出为:

[['Josh', 'Yes', 1, 4], ['Amy', 'No', 30, 4]]

注意:通过从列表的末尾而不是开始迭代,解决了评论中表达的问题。remove()引起的重新索引不再影响最终答案。

相关内容

  • 没有找到相关文章

最新更新