我正在处理一个问题,这里是输入
from django.contrib.auth.models import User
data = session.get_decoded()
uid = data.get('_auth_user_id', None)
user = User.objects.get(id = uid)
输出如下:
list1 = ['A', 'U', 'C', 'C', 'A']
list2 = ['12', '14']
key = {'A12':'*', 'C14':'#'}
并转换为
output1 = [['A12', 'U', 'C14', 'C', 'A'], ['A12', 'U', 'C', 'C14', 'A'],['A', 'U', 'C14', 'C', 'A12'], ['A', 'U', 'C', 'C14', 'A12']]
我使用Python2.7来解决这个问题,但我还没想出来......任何答案或建议都将不胜感激!
这是我的代码:
output2 = [['*', 'U', '#', 'C', 'A'], ['*', 'U', 'C', '#', 'A'],['A', 'U', '#', 'C', '*'], ['A', 'U', 'C', '#', '*']]
输出中有一些额外的列表,如果list2或list3太大,运行itertools.permutations将花费大量时间,所以我正在寻找另一种方法来解决这个问题。
答案 0 :(得分:1)
好的,这有点长,所以请耐心等待。第一步是构建一个字典,将字母转换为带有数字的字母,即itertools.product
到output1 = []
output2 = []
for group in itertools.product(*indicies):
l = []
l2 = []
for i in range(len(list1)):
l.append(list1[i] if i not in group else replacements[list1[i]])
l2.append(list1[i] if i not in group else key[replacements[list1[i]]])
output1.append(l)
output2.append(l2)
print output1
print output2
等。
[['A12', 'U', 'C14', 'C', 'A'], ['A12', 'U', 'C', 'C14', 'A'], ['A', 'U', 'C14', 'C', 'A12'], ['A', 'U', 'C', 'C14', 'A12']]
[['*', 'U', '#', 'C', 'A'], ['*', 'U', 'C', '#', 'A'], ['A', 'U', '#', 'C', '*'], ['A', 'U', 'C', '#', '*']]
这使事情变得更加简单。下一步是建立一个列表,列出所有需要替换的指标,并将这些指标分解为每种替换类型的子列表。
n!
最后,我们在需要替换的索引列表上使用n
来获取每个可能的分组,然后将它们添加到必要的输出列表中:
list1
这给了我们想要的答案:
.sendTextMessage
此代码与您运行的代码之间的一个主要区别是,我的代码仅运行所需的完全迭代次数,因此对于示例数据集,则为4次。您的代码似乎至少运行至少某些部分 protected void sendSMSMessage() {
Log.i("Send SMS", "");
String phoneNo = txtphoneNo.getText().toString();
String message = txtMessage.getText().toString();
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show();
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
次,其中border: 1px solid white;
的大小为[1,"yes","no","maybe"]
,并且等于示例数据集的120。这仍然可能在非常大的数据集上运行一段时间(这种问题的性质),但只会扩大它必须做的替换次数,而不是整体数据集的大小