如何在Python循环中根据用户选择指向目标IP列表?
解决Config类ip_list指向实际列表的问题
核心问题是你错误地将列表转成字符串赋值给了Config.ip_list,导致循环遍历字符。直接把列表对象赋值给它就能解决问题,不需要做字符串转换。
错误示例(导致遍历字符)
class Config: ip_list = "" ip_list1 = ["192.168.1.1", "192.168.1.2"] ip_list2 = ["10.0.0.1", "10.0.0.2"] user_choice = 1 # 错误:把列表转成字符串赋值 if user_choice == 1: Config.ip_list = str(ip_list1) else: Config.ip_list = str(ip_list2) # 此时循环会遍历字符串的每个字符 for ip in Config.ip_list: print(ip)
正确写法(指向实际列表)
class Config: ip_list = [] # 初始设为空列表即可,也可以不初始化 ip_list1 = ["192.168.1.1", "192.168.1.2"] ip_list2 = ["10.0.0.1", "10.0.0.2"] user_choice = 1 # 直接赋值列表对象,无需转换 if user_choice == 1: Config.ip_list = ip_list1 else: Config.ip_list = ip_list2 # 现在循环会逐个取出列表中的IP地址 for ip in Config.ip_list: print(ip)
可选:避免原列表修改影响Config.ip_list
如果担心后续修改ip_list1或ip_list2会同步改变Config.ip_list,可以赋值列表的拷贝:
# 两种拷贝方式任选其一 Config.ip_list = ip_list1.copy() # 或者 Config.ip_list = list(ip_list1)
内容的提问来源于stack exchange,提问作者rogueakula
相关产品推荐
相关产品推荐

