gpt4 book ai didi

python - 将特定列添加到单行列表(可能有点基础)

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:28 24 4
gpt4 key购买 nike

我正在设计一个密码恢复程序,我想让它“正确”/模块化到足以插入到其他程序中,所以我试图避免丑陋的黑客攻击。

这是纲要:我有一个带有字符串的列表

myString = "Hey what's up?"
myString2DList = [
myString,
]

现在我有一个只有一行的二维列表。我想要做的就是在用户指定的索引下添加列(可以是列表本身)

所以,可以说有 3 个索引(对应于一个列)喜欢:0,4,6(H,w,a)现在我只想动态地将任何内容 append 到这些列。我进行了搜索,但没有太大帮助(我确实看到一些有前途的帖子提到 Dict 数据类型可能更适合在这里使用),我觉得完全被卡住了......

编辑/澄清:

基本上,第一行将代表用户想要恢复的密码。假设用户不记得他们的密码,但至少可以记住几个字符。我希望这些列代表每个字符的每个可能的替代方案,然后我的脚本将强制使用约束密码。我已经编写了一个丑陋的脚本来做同样的事情,我只需要为每个密码重新编写代码,我想让它动态化,因为它真的派上用场了。

谢谢!

最佳答案

我不是很清楚你想做什么。 Python 拥有的最接近二维数组的是列表的列表。不过,您现在拥有的是单个列表,而不是二维列表。二维列表看起来像这样(用更有意义的名称替换这些名称):

list_of_lists = [[header0,  header1,  header2 ],
[r1c0data, r1c1data, r1c2data],
[r2c0data, r2c1data, r2c2data]]

要追加一行,您只需添加一个列表(即 list_of_lists.append(new_list))。要追加一列,您必须像这样将一个项目添加到教学列表的末尾:

c4data = [header3, r1c3data, r2c3data]
for i, row in enumerate(list_of_lists):
row.append(c4data[i])

如果你真的想要二维数组,你最好使用 numpy.array .

但是您是否希望按列标题为各个行编制索引?如果是这样,您最好使用字典列表:

list_of_dicts = [{'column0':r0c0data, 'column1':r0c1data, 'column2':r0c2data},
{'column0':r1c0data, 'column1':r1c1data, 'column2':r1c2data}]

您甚至可以将其缩减为一个字典,使用元组来处理单个元素:

tuple_key_dict = {(0, 0):r0c0data, (0, 1):r0c1data, (0, 2):r0c2data,
(0, 1):r0c1data, (1, 1):r1c1data, (1, 2):r1c2data}

这些方法中的每一种都适用于不同的任务。您甚至可能需要使用数据库。我们需要更多地了解您正在做的事情才能告诉您。


好吧,做你想做的,根本不需要列表的列表。只需创建一个字符串列表,每个字符串代表密码字符串相应索引处的可能字符。例如,假设用户使用的密码是“appletree”的德语和英语单词的组合,但不记得是哪个组合:

>>> char_list = [''.join(set((a, b))) for a, b in zip('apfelbaum', 'appletree')]
>>> char_list
['a', 'p', 'pf', 'el', 'el', 'bt', 'ar', 'eu', 'em']

char_list 现在在每个索引处包含所有可能的字母。要生成所有可能的密码,您只需要这些字符串的笛卡尔积:

>>> import itertools
>>> password_list = [''.join(tup) for tup in itertools.product(*char_list)]
>>> print 'appletree' in password_list
True
>>> print 'apfelbaum' in password_list
True
>>> print 'apfletrum' in password_list
True

关于python - 将特定列添加到单行列表(可能有点基础),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com