我试图将字符串中的字符转换为单独的ascii值。我似乎无法让每个角色都变成相对的ascii值。
例如,如果变量词具有值[" hello"," world"],则在运行完成的代码后,列表ascii将具有值:
[104,101,108,108,111,119,111,114,108,100]
到目前为止,我已经:
words = ["hello", "world"]
ascii = []
for x in words:
ascii.append(ord(x))
打印这会返回一个错误,因为ord期望一个字符但是得到一个字符串。有谁知道如何解决这个问题,以返回每个字母的ascii值?三江源
答案 0 :(得分:2)
将单词视为一个长字符串(例如,使用嵌套的list-comp):
ascii = [ord(ch) for word in words for ch in word]
# [104, 101, 108, 108, 111, 119, 111, 114, 108, 100]
相当于:
ascii = []
for word in words:
for ch in word:
ascii.append(ord(ch))
如果您想将它们作为单独的单词进行,那么您可以更改list-comp:
ascii = [[ord(ch) for ch in word] for word in words]
# [[104, 101, 108, 108, 111], [119, 111, 114, 108, 100]]
答案 1 :(得分:1)
您的循环遍历words
列表,该列表是string
的列表。现在,ord
是一个函数,它将返回单字符字符串的整数序数。所以你需要迭代字符串的字符。
words = ["hello", "world"]
ascii = []
for word in words:
ascii.extend(ord(ch) for ch in word)
print ascii
会给你,
[104, 101, 108, 108, 111, 119, 111, 114, 108, 100]