如何遍历dia_1至dia_18列表并检查元素1是否存在
解决方法
方法一:通过全局变量字典获取对应列表
你可以用Python的globals()函数(如果变量是全局的)来获取变量字典,通过字符串拼接的键拿到对应的列表。修改后的代码如下:
dia_1 = [0] dia_2 = [0, 0] dia_3 = [0, 0, 0] dia_4 = [0, 0, 0, 0] dia_5 = [0, 0, 1, 0, 0] dia_6 = [0, 0, 0, 0,] dia_7 = [0, 0, 0] dia_8 = [0, 0] dia_9 = [0] dia_10 = [0] dia_11 = [0, 0] dia_12 = [0, 0, 0] dia_13 = [0, 0, 0, 0] dia_14 = [0, 0, 1, 0, 0] dia_15 = [0, 0, 0, 0,] dia_16 = [0, 0, 0] dia_17 = [0, 0] dia_18 = [0] for i in range(1, 19): # range是左闭右开,所以写19才能覆盖1到18 current_list = globals()[f'dia_{i}'] if 1 in current_list: print(f'dia_{i} 里有1: yes') else: print(f'dia_{i} 里没有1: no')
方法二:用字典存储列表(更推荐)
零散的变量不好管理,把所有列表放到字典里是更规范的写法,后续维护和操作都更方便:
dia_dict = { 1: [0], 2: [0, 0], 3: [0, 0, 0], 4: [0, 0, 0, 0], 5: [0, 0, 1, 0, 0], 6: [0, 0, 0, 0], 7: [0, 0, 0], 8: [0, 0], 9: [0], 10: [0], 11: [0, 0], 12: [0, 0, 0], 13: [0, 0, 0, 0], 14: [0, 0, 1, 0, 0], 15: [0, 0, 0, 0], 16: [0, 0, 0], 17: [0, 0], 18: [0] } for num, lst in dia_dict.items(): if 1 in lst: print(f'dia_{num} 里有1: yes') else: print(f'dia_{num} 里没有1: no')
两种方法都能实现你的需求,第二种方法更符合Python代码规范,避免了依赖全局变量的潜在问题。
内容的提问来源于stack exchange,提问作者Jackson Vliet
相关产品推荐
相关产品推荐

