python - 如何获取仅选定索引的先前索引
问题描述
我在想出基于我当前索引的逻辑来获取前一个索引时遇到了麻烦,其中之间的元素数量不同。
#list of students, created from dictionary so values are messy.
studentslist = ['name','bob','school','abc','extra element','remark','breakfast','name','mom','school','def','remark','Lunch','name','job','school','ghi','remark','Lunch']
different_students=[]
selected_students=[]
for i in studentslist:
if 'remark' in i:
#seperate each student by getting last index of each student e.g 3 students so, [5,11,17]
different_students.append(studentslist.index[i])
#getting index of students with lunch e.g [11,17]
if 'Lunch' in studentlist:
selected_students.append(studentslist.index[i])
#for loop to return values of selected students
for i in selected_students:
for i in range(start,studentlist[i]):
#need help getting start value
#e.g range(0,5), range(5,11), and range(12,17)
#some students has additional elements so start cannot be hard coded with a fixed number.
#expected output is to iterate and get all elements from specified #range, e.g range(0,5) to get first student name, school, ...etc
解决方案
您可以扩展使用 enumerate,它会为每次迭代生成索引和元素。我复制了你的代码,发现 selected_students 只包含 [12,18]。考虑到这一点,此解决方案应该适合您的需求。
studentslist = ['name','bob','school','abc','extra element','remark','breakfast','name','mom','school','def','remark','Lunch','name','job','school','ghi','remark','Lunch']
different_students = [idx for idx,element in enumerate(studentslist) if element == 'remark']
selected_students = [idx for idx,element in enumerate(studentslist) if element == 'Lunch']
desired_ranges = []
for idx, element in enumerate(selected_students):
if idx > 0:
desired_ranges.append((selected_students[idx-1],element))
else:
desired_ranges.append((0,element))
print(different_students)
print(selected_students)
print(desired_ranges)
>>>>[5, 11, 17]
>>>>[12, 18]
>>>>[(0, 12), (12, 18)]
推荐阅读
- redis - 如何从 redis 3.0.2 迁移到 redis 4 或 redis 5
- javascript - 使用 RegEX JavaScript 捕获变量名称?
- javascript - 如何根据沙盒向我的 crud 添加撤消功能?
- javascript - 将输出命令与 javascript 一起使用时,如何获得换行符?
- sql - 如何确保从特定表中仅选择第一条记录,该表可以在 DB2 中创建多个相同 ID 的记录
- mysql - 如何在 Mysql 中使用 Sql 从表中查找丢失的数据?
- geometry - 在正方形上找到给定 3 个点的原点
- php - 将按钮 woocommerce 重定向到另一个页面
- email - VSTO Outlook 修改邮件正文的奇怪行为
- go - 一次查询获取嵌套对象