Python:如何在for循环的每次迭代中创建新变量?

Python:如何在for循环的每次迭代中创建新变量?,python,Python,我需要创建一个由3个列表组成的长文本字符串。该文本字符串必须采用非常特定的格式,其中每个列表中都有一个元素,元素之间用空格分隔,每个组后面都有一个分号。应运行以下脚本: import math reclassInt = [1, 2, 3, 4, 5, 6] minValueRange = [512, 550.0, 600.0, 650.0, 700.0, 750.0] maxValueRange = [550.0, 600.0, 650.0, 700.0, 750.0, 755] for n

我需要创建一个由3个列表组成的长文本字符串。该文本字符串必须采用非常特定的格式,其中每个列表中都有一个元素,元素之间用空格分隔,每个组后面都有一个分号。应运行以下脚本:

import math

reclassInt = [1, 2, 3, 4, 5, 6]
minValueRange = [512, 550.0, 600.0, 650.0, 700.0, 750.0]
maxValueRange = [550.0, 600.0, 650.0, 700.0, 750.0, 755]

for numbers in reclassInt:
    newNums = numbers-1
    longString = str(minValueRange[newNums]) + " " + str(maxValueRange[newNums]) + " " + str(reclassInt[newNums]) + ";" 
    print longString
这将返回6行,第一行是:

512 550.01

我想为每个字符串设置一个变量,而不是打印这些字符串。我希望这个变量对于循环的每个迭代都有一个唯一的名称(基于重分类项)

理想情况下,这可以创建像line1、line2、ect这样的变量,以使每次迭代的字符串输出相等。然后我可以在循环外将这些字符串串在一起,以获得所需的字符串

明确地说,我的最终目标就是这个字符串:

“512 550.01;550.0600.02;600.0650.03;650.0700.04;700.0750.05;750.07556;”


谢谢大家,

为了让事情变得更简单、更好,您可以使用字典:

longStrings= {}
for numbers in reclassInt:
    newNums = numbers-1
    d["longString_%d"%numbers] = str(minValueRange[newNums]) + " " + str(maxValueRange[newNums]) + " " + str(reclassInt[newNums]) + ";" 
    bs = "ls" + str(numbers)

为了使事情变得更简单、更好,您可以使用字典:

longStrings= {}
for numbers in reclassInt:
    newNums = numbers-1
    d["longString_%d"%numbers] = str(minValueRange[newNums]) + " " + str(maxValueRange[newNums]) + " " + str(reclassInt[newNums]) + ";" 
    bs = "ls" + str(numbers)

为了使事情变得更简单、更好,您可以使用字典:

longStrings= {}
for numbers in reclassInt:
    newNums = numbers-1
    d["longString_%d"%numbers] = str(minValueRange[newNums]) + " " + str(maxValueRange[newNums]) + " " + str(reclassInt[newNums]) + ";" 
    bs = "ls" + str(numbers)

为了使事情变得更简单、更好,您可以使用字典:

longStrings= {}
for numbers in reclassInt:
    newNums = numbers-1
    d["longString_%d"%numbers] = str(minValueRange[newNums]) + " " + str(maxValueRange[newNums]) + " " + str(reclassInt[newNums]) + ";" 
    bs = "ls" + str(numbers)
这个怎么样:

>>> d = {i+1:v for i,v in enumerate(zip(minValueRange, maxValueRange))}
>>> d
{1: (512, 550.0),
 2: (550.0, 600.0),
 3: (600.0, 650.0),
 4: (650.0, 700.0),
 5: (700.0, 750.0),
 6: (750.0, 755)}
然后,要打印字符串:

>>> for k,v in d.iteritems():
...    print('{} {} {};'.format(v[0], v[1], k))
...
512 550.0 1;
550.0 600.0 2;
600.0 650.0 3;
650.0 700.0 4;
700.0 750.0 5;
750.0 755 6;
要根据您的更新在一行中获取字符串,请执行以下操作:

>>> ''.join('{} {} {};'.format(v[0], v[1], k) for k,v in d.iteritems())
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
此外,如果这是您唯一的需求,您不需要生成字典,并且可以将所有内容组合成以下内容:

>>> ''.join('{} {} {};'.format(v[0], v[1], k+1) for k,v in enumerate(zip(minValueRange, maxValueRange)))
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
这个怎么样:

>>> d = {i+1:v for i,v in enumerate(zip(minValueRange, maxValueRange))}
>>> d
{1: (512, 550.0),
 2: (550.0, 600.0),
 3: (600.0, 650.0),
 4: (650.0, 700.0),
 5: (700.0, 750.0),
 6: (750.0, 755)}
然后,要打印字符串:

>>> for k,v in d.iteritems():
...    print('{} {} {};'.format(v[0], v[1], k))
...
512 550.0 1;
550.0 600.0 2;
600.0 650.0 3;
650.0 700.0 4;
700.0 750.0 5;
750.0 755 6;
要根据您的更新在一行中获取字符串,请执行以下操作:

>>> ''.join('{} {} {};'.format(v[0], v[1], k) for k,v in d.iteritems())
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
此外,如果这是您唯一的需求,您不需要生成字典,并且可以将所有内容组合成以下内容:

>>> ''.join('{} {} {};'.format(v[0], v[1], k+1) for k,v in enumerate(zip(minValueRange, maxValueRange)))
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
这个怎么样:

>>> d = {i+1:v for i,v in enumerate(zip(minValueRange, maxValueRange))}
>>> d
{1: (512, 550.0),
 2: (550.0, 600.0),
 3: (600.0, 650.0),
 4: (650.0, 700.0),
 5: (700.0, 750.0),
 6: (750.0, 755)}
然后,要打印字符串:

>>> for k,v in d.iteritems():
...    print('{} {} {};'.format(v[0], v[1], k))
...
512 550.0 1;
550.0 600.0 2;
600.0 650.0 3;
650.0 700.0 4;
700.0 750.0 5;
750.0 755 6;
要根据您的更新在一行中获取字符串,请执行以下操作:

>>> ''.join('{} {} {};'.format(v[0], v[1], k) for k,v in d.iteritems())
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
此外,如果这是您唯一的需求,您不需要生成字典,并且可以将所有内容组合成以下内容:

>>> ''.join('{} {} {};'.format(v[0], v[1], k+1) for k,v in enumerate(zip(minValueRange, maxValueRange)))
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
这个怎么样:

>>> d = {i+1:v for i,v in enumerate(zip(minValueRange, maxValueRange))}
>>> d
{1: (512, 550.0),
 2: (550.0, 600.0),
 3: (600.0, 650.0),
 4: (650.0, 700.0),
 5: (700.0, 750.0),
 6: (750.0, 755)}
然后,要打印字符串:

>>> for k,v in d.iteritems():
...    print('{} {} {};'.format(v[0], v[1], k))
...
512 550.0 1;
550.0 600.0 2;
600.0 650.0 3;
650.0 700.0 4;
700.0 750.0 5;
750.0 755 6;
要根据您的更新在一行中获取字符串,请执行以下操作:

>>> ''.join('{} {} {};'.format(v[0], v[1], k) for k,v in d.iteritems())
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'
此外,如果这是您唯一的需求,您不需要生成字典,并且可以将所有内容组合成以下内容:

>>> ''.join('{} {} {};'.format(v[0], v[1], k+1) for k,v in enumerate(zip(minValueRange, maxValueRange)))
'512 550.0 1;550.0 600.0 2;600.0 650.0 3;650.0 700.0 4;700.0 750.0 5;750.0 755 6;'


动态命名几乎总是一个坏主意。通常使用
dict
更好。(另外,您的代码可以通过使用
zip
:-)那
bs
应该在那里做什么?看起来
列表在这里可能更好。我不认为这些项目真的需要根据
reclassInt
命名;看起来真正需要的是它们要有序,并且可以通过索引访问。动态命名几乎总是一个坏主意。通常使用
dict
更好。(另外,您的代码可以通过使用
zip
:-)那
bs
应该在那里做什么?看起来
列表在这里可能更好。我不认为这些项目真的需要根据
reclassInt
命名;看起来真正需要的是它们要有序,并且可以通过索引访问。动态命名几乎总是一个坏主意。通常使用
dict
更好。(另外,您的代码可以通过使用
zip
:-)那
bs
应该在那里做什么?看起来
列表在这里可能更好。我不认为这些项目真的需要根据
reclassInt
命名;看起来真正需要的是它们要有序,并且可以通过索引访问。动态命名几乎总是一个坏主意。通常使用
dict
更好。(另外,您的代码可以通过使用
zip
:-)那
bs
应该在那里做什么?看起来
列表在这里可能更好。我不认为这些项目真的需要根据
reclassInt
命名;看起来真正需要的是它们是有序的,并且可以通过索引访问。我尝试了这个,但是当我添加命令打印长字符串时,它仍然是空的-{}我尝试了这个,但是当我添加命令打印长字符串时,它仍然是空的-{}我尝试了这个,但是当我添加了打印长字符串的命令时,它仍然是空的-{}我尝试了这个,但是当我添加了打印长字符串的命令时,它仍然是空的-{}我添加到了原始问题中,显示了我需要的确切语法。我没有让它工作。谢谢…谢谢-你的1行就行了。我在原来的问题中添加了我需要的确切语法。我没有让它工作。谢谢…谢谢-你的1行就行了。我在原来的问题中添加了我需要的确切语法。我没有让它工作。谢谢…谢谢-你的1行就行了。我在原来的问题中添加了我需要的确切语法。我没有让它工作。谢谢…谢谢-你的1行就行了。