Python:如何通过用户输入引用列表并使用该输入操作列表
解决Python通过输入字符串引用已定义列表的问题
你的代码里input()获取的是字符串类型,所以getlist[0]取的是输入字符串的第一个字符,而非目标列表的元素。要实现引用对应列表的需求,有两种常用方法,推荐优先用第一种:
方法一:用字典建立列表映射(安全可控)
把已定义的列表放到一个字典里,用列表名作为键,列表本身作为值,这样就能通过输入的字符串直接取出对应的列表:
list1 = [6,23,9] list2 = ["book","tree","car"] # 构建列表名与列表的映射关系 list_map = { "list1": list1, "list2": list2 } input_name = input("Enter list: ") # 先判断输入的列表名是否存在 if input_name in list_map: target_list = list_map[input_name] print(target_list[0]) # 输入list2时会输出'book' else: print("输入的列表名称不存在")
这种方法的优点是完全可控,不会意外访问到命名空间里的其他变量,安全性和可读性都很高。
方法二:通过命名空间函数获取(不推荐)
可以用globals()或locals()函数直接从全局/局部命名空间中取出变量,但这种方法存在安全风险,比如用户输入其他变量名可能会触发意外操作:
list1 = [6,23,9] list2 = ["book","tree","car"] input_name = input("Enter list: ") try: target_list = globals()[input_name] # 额外判断是否为列表类型,避免误操作 if isinstance(target_list, list): print(target_list[0]) else: print("输入的名称对应的不是列表") except KeyError: print("输入的列表名称不存在")
除非有特殊需求,否则不建议用这种方式,因为它会暴露整个全局命名空间的变量,存在安全隐患。
内容的提问来源于stack exchange,提问作者FireFin
相关产品推荐
相关产品推荐

