Python 如何使用字符串格式指定唯一变量?

Python 如何使用字符串格式指定唯一变量?,python,string,loops,formatting,Python,String,Loops,Formatting,我有一个列表,我已经设法将列表转换成字符串。现在,我想通过使用字符串格式将1附加到变量的末尾,为列表中的每个项目分配一个变量 listOne = ['33.325556', '59.8149016457', '51.1289412359'] itemsInListOne = int(len(listOne)) num = 4 varIncrement = 0 while itemsInListOne < num: for i in listOne: print

我有一个列表,我已经设法将列表转换成字符串。现在,我想通过使用字符串格式将1附加到变量的末尾,为列表中的每个项目分配一个变量

listOne = ['33.325556', '59.8149016457', '51.1289412359']

itemsInListOne = int(len(listOne))

num = 4
varIncrement = 0

while itemsInListOne < num:
    for i in listOne:
        print a = ('%dfinalCoords{0}') % (varIncrement+1)
        print (str(listOne).strip('[]'))
    break
listOne=['33.325556','59.8149016457','51.1289412359']
itemsInListOne=int(len(listOne))
num=4
变量增量=0
而itemsInListOne
我得到以下错误:SyntaxError:无效语法

如何解决此问题并以以下格式分配新变量:

a0=33.325556
a1=59.8149016457等。

您当前的代码有几个问题:

listOne = ['33.325556', '59.8149016457', '51.1289412359']

itemsInListOne = int(len(listOne)) # len will always be an int

num = 4 # magic number - why 4?
varIncrement = 0

while itemsInListOne < num: # why test, given the break?
    for i in listOne:
        print a = ('%dfinalCoords{0}') % (varIncrement+1) # see below
        print (str(listOne).strip('[]')) # prints list once for each item in list
    break # why break on first iteration
这:

  • 同时尝试
    打印
    并分配
    a=
    (因此出现
    语法错误
  • 混合了两种不同类型的字符串格式(
    '%d'
    '{0}'
    );及
  • 从不实际递增
    varIncrement
    ,因此无论如何,您将始终得到
    '1finalCoords{0}'
  • 我建议如下:

    listOne = ['33.325556', '59.8149016457', '51.1289412359']
    
    a = list(map(float, listOne)) # convert to actual floats
    
    您可以通过索引轻松访问或编辑单个值,例如

    # edit one value
    a[0] = 33.34
    
    # print all values
    for coord in a:
        print(coord)
    
    # double every value
    for index, coord in enumerate(a):
        a[index] = coord * 2
    

    看看您的列表,您可能需要两个列表中的坐标对,这也可以通过一个简单的2元组列表来完成:

    listOne = ['33.325556', '59.8149016457', '51.1289412359']
    listTwo = ['2.5929778', '1.57945488999', '8.57262235411']
    
    coord_pairs = zip(map(float, listOne), map(float, listTwo))
    
    其中:

    coord_pairs == [(33.325556, 2.5929778), 
                    (59.8149016457, 1.57945488999), 
                    (51.1289412359, 8.57262235411)]
    

    这不是一个好主意。相反,把
    做成一个
    字典或列表,并把你的值放在这个结构中。我知道这并不理想,但我需要为每个字符串指定一个唯一的变量,因为我怀疑它。你能解释一下为什么你认为你需要访问
    a0
    a1
    等值,而不是
    a[0]
    a[1]
    等值吗?因为我的脚本正在从照片中提取坐标。用户选择X张照片,将坐标撕成一个列表。我不知道他们会选多少张照片,可能是30张,可能是100张。我需要一种自动为每个坐标分配一个变量的方法。这是我能想到的唯一办法。我拼命想办法。如果你知道的更多,请告诉我。谢谢你。@BrenBarn是对的,你应该把它们列在一个列表中
    coord_pairs == [(33.325556, 2.5929778), 
                    (59.8149016457, 1.57945488999), 
                    (51.1289412359, 8.57262235411)]