所以我试图在数字之间进行混合匹配,这是我的代码
- (void)authorizeRequest:(NSMutableURLRequest *)request
completionHandler:(void (^)(NSError *error))handler
问题是它是随机的,但它不断重复像这里的数字
**
1.0工作是[4.0]。 2.0工作是[5.0]。 3.0工作是[4.0]。
**
我该怎么做才能让它不重复。 我正在使用python 2.7.12
另外,我如何才能使用字母数字而不是浮点数。
答案 0 :(得分:1)
实现此目标的最佳方法是使用random.shuffle
(如果您想随机化原始样本列表)或random.select
(如果您想保留原始样本副本):
random.shuffle
的示例:
>>> import random
>>> my_samples = ['A1', 'A2', 'A3']
>>> shuffle(my_samples)
>>> cool1, cool2, cool3 = my_samples
# Random Result: cool1 = 'A3', cool2='A1', cool3='A2'
random.select
的示例:
>>> cool1, cool2, cool3 = random.sample(['A1', 'A2', 'A3'], 3)
如果您希望解决方案发生微小变化。您可以根据随机选择从样本中删除条目,并从剩余样本中获取下一个选项,如:
>>> import random
>>> cool1 = random.sample(my_samples,1)
>>> my_samples.remove(*cool1)
>>> my_samples
['A1', 'A3']
>>> cool2 = random.sample(my_samples,1)
>>> my_samples.remove(*cool2)
>>> cool3 = random.sample(my_samples,1)
>>> my_samples.remove(*cool3)
>>> my_samples
[]
>>> cool1, cool2, cool3
(['A2'], ['A3'], ['A1'])
答案 1 :(得分:1)
写一个类从列表中选择一个唯一元素
1.排列找到所有独特的元素
2.休息可以定义新数据和结果长度
from itertools import permutations
class PickOne( object ):
def __init__(self,lst,l):
self.lst = lst
self.visit = set()
self.l = l
self.lenght = self.number(l)
def pick(self):
if len(self.visit) == self.lenght :
print 'run out numbers'
return
res = tuple(random.sample(self.lst,self.l))
while res in self.visit:
res = tuple(random.sample(self.lst,self.l))
self.visit.add( res )
return res
def reset(self,l,lst = None):
if not lst:
lst = self.lst
self.__init__(lst,l)
def number(self,l):
return len( list(permutations(self.lst,l)) )
示例:
a = PickOne([1,2,3,4],1)
>>> a.pick()
(2,)
>>> a.pick()
(1,)
>>> a.pick()
(4,)
>>> a.pick()
(3,)
>>> a.pick()
run out numbers
>>> a.reset(2)
>>> a.pick()
(3, 1)
>>> a.pick()
(3, 4)
>>> a.pick()
(2, 1)
答案 2 :(得分:0)
由于您是从列表中进行选择,因此您应该在每次检查后从列表中删除该条目。
创建原始列表,将根据需要使用。
从第一个列表中创建第二个列表,以便在您选择时使用。
当您从列表中选择每个元素时,将其删除
将所选元素放入所选元素列表中。
<强>参数强>
obj - 这是要从列表中删除的对象。返回值
此方法不返回任何值,但删除了 从列表中给出对象。示例强>
以下示例显示了remove()方法的用法。#!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.remove('xyz'); print "List : ", aList aList.remove('abc'); print "List : ", aList
当我们运行以上程序时,它会产生以下结果 -
List : [123, 'zara', 'abc', 'xyz'] List : [123, 'zara', 'xyz']
答案 3 :(得分:-2)
你可以这样做:
cool1, cool2, cool3 = random.sample([A1, A2, A3], 3)
另外,我如何才能使用字母数字而不是浮点数。
您是否尝试过不将输入转换为浮动...?