Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PYTHON如何根据需要生成尽可能多的变量_Python - Fatal编程技术网

PYTHON如何根据需要生成尽可能多的变量

PYTHON如何根据需要生成尽可能多的变量,python,Python,我有一个循环正在读取一个文本文件。每次循环发现不同的内容时,我希望它生成一个新变量,并将该行文本中的值赋给新创建的变量。因此,如果文本文件如下所示: 三, 3. 6. 1. 3. 六, 这个程序会产生3个变量,一个为1,一个为3,一个为6。我该如何做>您可能想要的是 >>> set("3 3 6 1 3 6".split()) set(['1', '3', '6']) 你可能想要的是这个 >>> set("3 3 6 1 3 6".split()) set(

我有一个循环正在读取一个文本文件。每次循环发现不同的内容时,我希望它生成一个新变量,并将该行文本中的值赋给新创建的变量。因此,如果文本文件如下所示:

三, 3. 6. 1. 3. 六,


这个程序会产生3个变量,一个为1,一个为3,一个为6。我该如何做>

您可能想要的是

>>> set("3 3 6 1 3 6".split())
set(['1', '3', '6'])

你可能想要的是这个

>>> set("3 3 6 1 3 6".split())
set(['1', '3', '6'])

可以将值存储在数组中:

(假设python 2.7)


然后可以使用
array.index(x)
搜索该值是否已在数组中,并使用
array.append(x)
将其添加到数组中

可以将值存储在数组中:

(假设python 2.7)


然后,您可以使用
array.index(x)
搜索该值是否已在数组中,并使用
array.append(x)
将其添加到数组中。有几种方法:

mydict = {}
for x in myfile.read().split():
    mydict[x] = None
print mydict
或:


但您试图做的有点不清楚。

有几种方法:

mydict = {}
for x in myfile.read().split():
    mydict[x] = None
print mydict
或:


但是您试图做的有点不清楚。

假设文本文件是可编辑的

def get_unique_numbers(text_file):
   temp = []
   for number in text_file:
      if number not in temp:
         temp.append(number)
   return temp

假设text_文件是可编辑的

def get_unique_numbers(text_file):
   temp = []
   for number in text_file:
      if number not in temp:
         temp.append(number)
   return temp

您可以使用
exec
builtin创建变量

Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [3,3,6,1,3,6]
>>> for e in a:
...     exec 'var%s = %e' % (e,e)
...
...
>>> var3
3.0
>>> var6
6.0
>>> var1
1.0
>>>
编辑
这是一个糟糕的解决方案,永远不要使用。但是,重要的是要知道这样的事情是可能的。

您可以使用
exec
内置来创建变量

Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [3,3,6,1,3,6]
>>> for e in a:
...     exec 'var%s = %e' % (e,e)
...
...
>>> var3
3.0
>>> var6
6.0
>>> var1
1.0
>>>
编辑
这是一个糟糕的解决方案,永远不要使用。然而,重要的是要知道这样的事情是可能的。

这段代码应该满足您的要求

import sys 
from string import ascii_letters 

# Task 1, remove duplicate elements. 
def nodup(fn): 
    f = open(fn) 
    data = f.read().split() 

    res = [] 
    res.extend((i for i in data if i not in res)) 
    return res 

# Task 2, create the new variables on the fly 
module = sys.modules[__name__] 
filename = "data" 
for idx, value in enumerate(nodup(filename)): 
    setattr(module, ascii_letters[idx], value) 

print (a, b, c) 
# ('3', '6', '1')

此代码应该满足您的要求

import sys 
from string import ascii_letters 

# Task 1, remove duplicate elements. 
def nodup(fn): 
    f = open(fn) 
    data = f.read().split() 

    res = [] 
    res.extend((i for i in data if i not in res)) 
    return res 

# Task 2, create the new variables on the fly 
module = sys.modules[__name__] 
filename = "data" 
for idx, value in enumerate(nodup(filename)): 
    setattr(module, ascii_letters[idx], value) 

print (a, b, c) 
# ('3', '6', '1')


他说他想要三个变量,这就产生了一组object@Hunter当前位置他并不真正想要三个变量,他只是认为他想要,因为他不了解容器。我不喜欢这个答案的唯一一点是,他无法以任何可预测的方式获得他的值,而他提出的“变量”我想我想他会给他们起个名字的。从这个意义上讲,一个或散列dict将更具特色。Python中的“变量”只是对象的名称(句柄);当然,你会用实数写
unique\u numbers=set(…)
。他说他想要三个变量,这就创建了一个集合object@Hunter:他其实并不想要三个变量,他只是认为他知道,因为他不知道容器。我不喜欢这个答案的唯一一点是,他无法以任何可预测的方式获得他的值,而对于他提出的“变量”,我想我认为他会给它们取个名字。从这个意义上讲,一个或散列dict将更具特色。Python中的“变量”只是对象的名称(句柄);当然,你会用真实的代码编写
unique\u numbers=set(…)
。你可能不想做你说你想做的事,所以,你为什么不告诉我们你实际上想做什么,所以我们可以更好地帮助你吗?我正在尝试获取所有不同的数字,然后将它们写入一个.txt文件作为输出。Pyroscope的答案给了我一个足够好的集合,因为我相信你可以将一个集合写入一个文件。我想我会坚持他的回答,但如果你有什么要补充的,那将不胜感激。你可能不想做你说你想做的事,所以,你为什么不告诉我们你实际上想要完成什么,所以我们可以更好地帮助你吗?我正在尝试获取所有不同的数字,然后将它们写入一个.txt文件作为输出。Pyroscope的答案给了我一个足够好的集合,因为我相信你可以将一个集合写入一个文件。我想我会坚持他的回答,但如果你有什么要补充的,那将不胜感激。这太可怕了,虽然它只满足了用户的要求,但不是他想要的。他想要一份口述。我从来没有说过这是好的,我也不认为我应该因为回答被问到的问题而被否决。其他许多答案都很好地解决了这个问题,因此OP可以将它们作为参考。我想展示另一种选择。我理解你为什么这样回答,但实际上,这种方法没有什么好处。一旦他有了这些变量,他将如何访问它们?更多的“高管”黑客?这是一个纸牌屋,用来避免无缘无故地使用dict。exec是一个强有力的工具,不适合作为初学者问题的答案。你建议用一种不好的方法来做一些不应该做的事情。您可以按照@WickedGuy建议的方式(使用setattr)创建新变量,而不必使用
exec
,如果这确实是必要的(事实并非如此)。@Hunter如果您给出了答案,并且没有将其定性为不好,那么可以公平地假设您认为它是好的。这很可怕,尽管它正是用户要求的,这不是他想要的。他想要一份口述。我从来没有说过这是好的,我也不认为我应该因为回答被问到的问题而被否决。其他许多答案都很好地解决了这个问题,因此OP可以将它们作为参考。我想展示另一种选择。我理解你为什么这样回答,但实际上,这种方法没有什么好处。一旦他有了这些变量,他将如何访问它们?更多的“高管”黑客?这是一个纸牌屋,用来避免无缘无故地使用dict。exec是一个强有力的工具,不适合作为初学者问题的答案。你建议用一种不好的方法来做一些不应该做的事情。您可以按照@WickedGuy建议的方式(使用setattr)创建新变量,而不必使用
exec
,如果这确实是必要的(事实并非如此)。@Hunter如果您给出了答案,并且没有将其定性为不好,假设您认为它是好的是公平的。这就是为什么在Python中添加了集合。这是对原始问题的一种可能解释。如果OP