方法一:保持
方法二:使用remove()直接修改
刚开始学习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()
引起的重新索引不再影响最终答案。