首页 > 解决方案 > python3 - for/while 循环遍历列表

问题描述

是否有另一种方法来实现以下想法:

我正在尝试使用 for 循环形成子列表(仅限数字)。我想遍历给定的列表,像往常一样从第一个元素开始,直到出现一个字母。如果出现某种字符(或字母),则 for 循环应准确停止在该位置,返回到目前为止形成的列表并继续工作。最后,主列表应该包含所有形成的子列表并返回它们。

我尝试使用 while 循环,因为这种循环应该跳过列表的所有元素并同时检查每个元素是否为整数。但不幸的是,我的实施没有奏效。顺便说一句,我宁愿一个不使用 itertool (groupby) 的实现。

感谢您的帮助!

a_list = [1, 1, 'z', 1, 'x', 1, 1, 'c', 1, 1, 1, 'v', 1]

main_list = []
small_list = []

for i in a_list:
    if isinstance(i, int):
        small_list.append(i)
    else:
        main_list += [small_list]
        small_list = []
main_list += [small_list]
    

print("main_list: ", main_list)
# [[1, 1], [1], [1,1], [1,1,1], [1]]

final_list = []
for i in main_list:
    item_length = len(i)
    final_list += [item_length]
print("final list is: ", final_list)

标签: pythonfor-loop

解决方案


如果您的数组中的所有项目都是单个字符而不是类似12or的东西AB,您可以将join所有项目合并为一个string '11z1x11c111v1',然后使用 Python字符串方法,可能是.find():


推荐阅读