【问题标题】:Return element of a list in new variable and remove it from the list返回新变量中列表的元素并将其从列表中删除
【发布时间】:2021-07-10 05:52:13
【问题描述】:
Table_id = ['43c776cc-dcfe-498e-9e0c-465e498c4509','fbcbdda3-e391-42f0-b139-c266c0bd564d','caa5ebb5- 
eee1-4261-8646-75139a22fa14']
    
naming= range(1,len(Table_id))
list_to_pop= Table_id.copy()
    
for i in range(len(Table_id)-1):
    if i in Table_id:
      print("Table_"+[naming[0]],i.pop())
      naming.pop(0)

我想要的输出如下所示:

Table_1 = 'caa5ebb5-eee1-4261-8646-75139a22fa14'
Table_2 = 'fbcbdda3-e391-42f0-b139-c266c0bd564d'
Table_3 = '43c776cc-dcfe-498e-9e0c-465e498c4509'
    

有什么帮助吗?

【问题讨论】:

  • 你想在 python 文件中定义这些变量吗?
  • 我希望我的列表中的元素根据列表中的元素具有不同的名称,如果我选择第一个,它将被称为 Table_1 然后这个元素从列表,我们取第二个,它将被称为 Table_2 依此类推,最后我应该在列表中没有更多的元素,称为 table_id

标签: python for-loop if-statement while-loop popup


【解决方案1】:

您可以使用 globals() 或 locals() 创建动态变量,但强烈建议不要这样做。而是使用您想要的名为变量的键制作一个字典。在这种情况下,您可以使用 Table['Table_1'] 作为变量 'Table_1' 的替代。

同样不要在同一个循环中弹出/删除项目,请在处理完 Table_id 中的数据后执行

Table_id = ['43c776cc-dcfe-498e-9e0c-465e498c4509','fbcbdda3-e391-42f0-b139-c266c0bd564d','caa5ebb5- eee1-4261-8646-75139a22fa14']

Table = {}
for index, elem in enumerate(Table_id):
    key = 'Table_'+str(index+1)
    Table[key] = elem

for item in Table.values():
    Table_id.remove(item)

print(Table)
print(Table_id)
# {'Table_1': '43c776cc-dcfe-498e-9e0c-465e498c4509', 'Table_2': 'fbcbdda3-e391-42f0-b139-c266c0bd564d', 'Table_3': 'caa5ebb5- eee1-4261-8646-75139a22fa14'}
# []

【讨论】:

    【解决方案2】:

    这里有一个选项,只使用字典会更容易:

    Table_id = ['43c776cc-dcfe-498e-9e0c-465e498c4509', 'fbcbdda3-e391-42f0-b139-c266c0bd564d', 'caa5ebb5- eee1-4261-8646-75139a22fa14']
    
    to_file = ''
    for index, item in enumerate(Table_id):
        to_file += f'table_{index + 1} = "{item}"\n'
    
    with open('this_file.py') as file:
        data = file.read()
    
    with open('this_file.py', 'w') as file:
        file.write(to_file + data)
    

    this_file.py 是当前文件您正在编写此代码,但正如我所说,字典可能会更好,因为其他答案建议

    【讨论】:

      【解决方案3】:

      for i in range(len(Table_id) - 1) 将 0 和 1 分配给 i 而不是列表! i.pop() 应该引发异常!

      如果要从Table_id 中删除Table_id[i],可以使用del Table_id[i],如果要删除索引未知的项目,可以使用Table_id.remove(value)

      编辑: 如果仅打印列表中的项目很重要:

      Table_id = ['item1', 'item2', 'item3']
      
      for i, v in enumerate(Table_id):
          print(f'Table_{i + 1} : {v}')
      Table_id.clear()
      

      【讨论】:

      • 如何调用变量而不打印结果?我希望能够在下一个代码块中使用相关值调用例如 Table_1
      • 您应该为此目的使用字典:Table_id = {'Table_1' : 'item1', 'Table_2' : 'item2', 'Table_3' = 'item3'},然后获取item1print(Table_id['Table_1'])
      猜你喜欢
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多