Python中如何以列表首个元素为名称命名列表变量?
动态生成命名列表变量的解决方案
嘿,我来帮你搞定这个需求!首先得说一句:直接生成List1、List2这类独立变量其实不是最优选择——容易污染命名空间,后续维护和批量操作都麻烦。不过我会先给你推荐更稳妥的方案,再告诉你怎么实现你想要的“在循环里加一行代码创建变量”的需求。
推荐方案:用字典存储所有列表(更安全易维护)
把每一行的列表都存在一个字典里,键就是"List1"、"List2"这样的命名,后续调用直接通过键名访问就行,代码清晰还不容易出问题:
import csv # 初始化一个字典来存所有行的列表 row_lists = {} line_num = 0 user_input = input("Enter GTIN-8 Code For Desired Product: ") with open('Task2.csv') as file: reader = csv.reader(file, delimiter=',', quotechar=',', quoting=csv.QUOTE_MINIMAL) for row in reader: line_num += 1 list_name = f"List{line_num}" # 把列表存入字典 row_lists[list_name] = [list_name] + row print(row_lists[list_name]) # 后续调用示例:想拿第一行的列表就这么写 # print(row_lists["List1"])
满足你需求的方案:直接创建独立变量(不推荐但可行)
如果你确实需要生成List1、List2这类可以直接调用的变量,只需要在循环里加一行代码,利用locals()函数动态添加局部变量就行:
import csv line_num = 0 user_input = input("Enter GTIN-8 Code For Desired Product: ") with open('Task2.csv') as file: reader = csv.reader(file, delimiter=',', quotechar=',', quoting=csv.QUOTE_MINIMAL) for row in reader: line_num += 1 list_name = f"List{line_num}" current_list = [list_name] + row # 这就是你要加的那一行:把列表赋值给对应的变量名 locals()[list_name] = current_list print(current_list) # 后续调用示例:现在可以直接用List1、List2这些变量了 # print(List1) # print(List2)
为什么不推荐直接创建变量?
- 要是变量名和代码里已有的变量重名,会直接覆盖原有值,很容易出隐蔽的bug
- 后续想批量处理这些列表(比如遍历所有行的列表),用字典可以直接
row_lists.values(),但独立变量得手动一个个找 - 代码可读性差,其他开发者看的时候会困惑这些
ListN变量是在哪定义的
内容的提问来源于stack exchange,提问作者Nithila Logathas
相关产品推荐
相关产品推荐

