gpt4 book ai didi

python - 在Python中,如何将 'translate'中的 'list'元素转移到另一个 'list'中的元素?

转载 作者:行者123 更新时间:2023-11-30 23:38:00 26 4
gpt4 key购买 nike

好吧,我来之前做了一些研究,但没有找到任何特别适合我想要找到的东西。

这个问题有点困难(至少对我来说),所以我会尽力在这里解释它。

好的:所以我得到了一个字母列表,这些字母是从用户输入的字符串中获取的。

(他们输入一个字符串,然后将其全部分解为单个字母并添加到列表中,其中每个字母都是其自己的“元素”)

现在我想这样做,因为我希望将此列表中的所有字母翻译成其他内容,具体取决于我“设置”的每个字母要翻译的内容。

我对如何做到这一点有点困惑,我可以有一个完整的 while 循环来执行以下操作:

获取第一个元素,然后用它运行整个字母表和数字 1-9。如果它匹配任何内容,则会将其添加到新列表中。

问题是,这样做似乎效率很低,我认为他们肯定是更好的方法,我将在下面发布我正在谈论的内容:

我无法让代码格式正常工作,我只是对此感到沮丧。代码如下:

print("\t\t\tThe fun encryptor")
print("\n\n Please Enter the following string to be encrypted")
STRING = input("Entry: ")
STRINGCOPY = [STRING]
DIRECTORY = []
#The string is to be encyrypted.
STRINGLEN = len(STRING)
OPPLIMIT = 0
REPEAT = False
DIRECTORYT = []

while OPPLIMIT < STRINGLEN:
DIRECTORY = DIRECTORY + str.split(STRING[OPPLIMIT])
OPPLIMIT += 1

# String Added to the Directory necessary
if "a" in DIRECTORY[0]:
DIRECTORYT += [0.01]
elif "b" in DIRECTORY[0]:
DIRECTORYT += [0.11]
elif "c" in DIRECTORY:
DIRECTORYT += [1.11]

#and so on and so forth

a="0.01"
b="0.11"
c="1.11"
d="0.02"
e="0.22"
f="2.22"
g="0.03"
h="0.33"
i="3.33"
j="0.04"
k="0.44"
l="4.44"
m="0.05"
n="0.55"
o="5.55"
p="0.06"
q="0.66"
r="6.66"
s="0.07"
t="0.77"
u="7.77"
v="0.08"
w="0.88"
x="8.88"
y="0.09"
z="0.99"

正如您所看到的,经历这一切似乎几乎毫无意义,有没有更简单的方法来做到这一点?

也许使用了for函数?

最佳答案

首先,无需创建名为 ab 等的 26 个单独变量,只需创建一个 dict:

values = {'a': 0.01,
'b': 0.11',
#...
}

现在,您可以这样做:

for letter in DIRECTORY[0]:
DIRECTORYT += [values[letter]]

或者,另一种选择:

for letter in values:
if letter in DIRECTORY[0]:
DIRECTORYT += [values[letter]]

两者之间的区别在于它们如何处理重复项。我不确定你想要哪一个(或者,如果你从来没有任何重复,所以这并不重要)。尝试使用不同的示例数据执行这两个操作,直到您明白为止。

顺便说一句,通常最好这样做:

DIRECTORYT.append(values[letter])

比:

DIRECTORYT += [values[letter]]

换句话说,如果不需要,就不要创建列表

但在这种情况下,您可以用列表理解或生成器表达式替换整个循环:

DIRECTORYT += [values[letter] for letter in DIRECTORY[0]]
DIRECTORYT += [values[letter] for letter in values if letter in DIRECTORY[0]]

或者:

DIRECTORYT.extend(values[letter] for letter in DIRECTORY[0])
DIRECTORYT.extend(values[letter] for letter in values if letter in DIRECTORY[0])

extend/generator 表达式版本的优点是,它们不会构建临时列表

关于python - 在Python中,如何将 'translate'中的 'list'元素转移到另一个 'list'中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905138/

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