所以我试图制作一个暴力破解密码的程序。首先,我编写了一个密码长度为1的程序:password=input('Whatisyourpassword?\n')chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'defbrute_force():forcharinchars:ifchar==password:returncharprint(brute_force())然后,我将其编辑为长度为2的密码:defbrute_force():guess=[None,None]forcharinchars:gues
我有一个numpy数组[0,1,1,2,2,0,1,...],它只包含数字0-k。我想创建一个新数组,其中包含n个可能的0-k排列数组。一个k=2和n=6的小例子:a=[0,1,0,2]permute(a)result=[[0,1,0,2][0,2,0,1][1,0,1,2][2,1,2,0][1,2,1,0][2,0,2,1]]有没有人对如何实现这一目标有任何想法/解决方案? 最佳答案 您的a就是组合主义者所说的multiset。sympy图书馆有variousroutines与他们一起工作。>>>fromsympy.utilit
这是我想做的一个例子spam_list=["We","are","the","knights","who","say","Ni"]spam_order=[0,1,2,4,5,6,3]spam_list.magical_sort(spam_order)print(spam_list)["We","are","the","who","say","Ni","knights"]我可以用enumerate、list等等,但我想直接影响spam_list,比如list.sort()而不是像sorted()那样复制它编辑:推送一个字符串示例以避免索引和spam_list的值之间的混淆编辑:原来这是P
我正在尝试编写一个函数来测试列表是否按降序排列。这是我目前所拥有的,但它似乎并不适用于所有列表。我使用了列表[9,8,5,1,4,3,2],它返回了'true'。我似乎无法弄清楚我的错误在哪里。defordertest(A):n=len(A)foriinrange(n):ifA[i]>=A[i+1]:return'true'else:return'false' 最佳答案 您可以使用ageneratorexpression轻松完成此操作和theall()builtin:all(earlier>=laterforearlier,late
我怎样才能随机打乱列表,使所有元素都不会留在原来的位置?换句话说,给定一个包含不同元素的列表A,我想生成它的排列B以便这个排列是随机的并且对于每个n,a[n]!=b[n]例如a=[1,2,3,4]b=[4,1,2,3]#goodb=[4,2,1,3]#gooda=[1,2,3,4]x=[2,4,3,1]#bad我不知道这种排列的正确术语(是“总”吗?)因此很难用谷歌搜索。正确的术语似乎是“紊乱”。 最佳答案 经过一些研究,我能够实现“提前拒绝”算法,例如在thispaper.它是这样的:importrandomdefrandom_d
给定一列,我想对数据框中的行进行分组。然后我想收到一个编辑过的数据框,我可以决定哪个聚合函数有意义。默认值应该只是组中第一个条目的值。(如果该解决方案也适用于两列的组合,那就太好了)例子#!/usr/bin/envpython"""Testdataframegrouping."""#3rdpartymodulesimportpandasaspddf=pd.DataFrame([{'id':1,'price':123,'name':'anna','amount':1},{'id':1,'price':7,'name':'anna','amount':2},{'id':2,'price':
我有以下格式(示例)保存的数据(数字):234127342345567231244452345621444567...是否有任何python-way方法来排列数字并将它们作为234127342345567231244452345621444567(我无法预测列的大小)。 最佳答案 这是一个简单、独立的示例,展示了如何设置可变列宽的格式:data='''\234127342345567231244452345621444567'''#Splitinputdatabyrowandthenonspacesrows=[line.strip(
我整理了以下代码来检查字符串/单词是否按字母顺序排列:defisInAlphabeticalOrder(word):word1=sorted(word)word2=[]foriinword:word2.append(i)ifword2==word1:returnTrueelse:returnFalse但我觉得除了将字符串转换为列表之外,必须有一种更有效的方法(更少的代码行)来检查。是否没有一个操作数可以按字母顺序对字符串进行排序而不将每个字符转换为列表?谁能提出更有效的方法? 最佳答案 这具有O(n)的优势(对字符串进行排序是O(n
所以我面临着一个挑战——找到一个字符串中最长的字母字符串。例如,“abcghiijkyxz”应该导致“ghiijk”(是的,i加倍)。我一直在使用循环来解决这个问题——遍历整个字符串,然后针对每个字符,使用lower和ord开始第二个循环。编写该循环不需要任何帮助。但是,有人向我建议Regex非常适合这类事情。我的正则表达式很弱(我知道如何获取静态集,我的前瞻性知识扩展到知道它们存在)。我将如何编写一个Regex来向前看,并检查future的字符是否按字母顺序排列?或者使用Regex的建议对这类事情不切实际?编辑:普遍的共识似乎是正则表达式对于这类事情来说确实很糟糕。
请问,我怎样才能得到所有这些二进制排列,而不在Python中重复?a=list(itertools.permutations([1,1,0,0]))foriinrange(len(a)):printa[i](1,1,0,0)(1,1,0,0)(1,0,1,0)...如果它能大致有效,那就太好了,因为我必须用这样一个甚至包含30个元素的列表来做到这一点。 最佳答案 正如@Antti在评论中所说,这相当于寻找输入列表位置的组合,这些位置确定输出中的哪些位为1。fromitertoolsimportcombinationsdefbinar