试图创建一个数组。不断收到TypeError

时间:2018-11-20 23:39:53

标签: arrays python-3.x typeerror

我试图更好地掌握数据结构。 我一直试图将一个数组添加为另一个数组的元素,但是当我尝试创建一个数组时,我不断收到TypeError:Array项必须是Unicode字符。我正在跟踪我能听见的视频/所有读到T的内容。

from array import array

Swords = array('u',['Steel Sword', 'Bronze Sword', 'Iron Sword'])
Axes = ['Steel Axe', 'Bronze Axe', 'Iron Axe']
Maces = ['Steel Mace','Bronze Mace','Iron Mace']
Bows = ['Wood Bow', 'Bone Bow', 'Obsidian Bow']
Daggers = ['Steel Dagger', 'Bronze Dagger', 'Obsidian Dagger']

Weapons = array('u',([Swords])

for i in Weapons:

    print(i)

知道发生了什么吗?

1 个答案:

答案 0 :(得分:1)

'u'类型的代码对应于Python过时的unicode字符。这意味着它将使用unicode字符。你可以测试一下

test_one = array("u", ["\u2641","\u2642","\u2643"])
for i in test_one:
    print(i)

您也可以通过它查看

test_two = array("u", ["T","e","s","t"])
for i in test_two:
    print(i)

注意,在两种情况下,它都是一个字符。不是整个字符串。为了处理字符串,您必须将每个字符串转换为字符列表。

test_three = array("u", [ch for ch in "Test"])
for i in test_three:
    print(i)

最后,如果您想从字符串列表中分解单个字符,则可以进行类似于test_three的列表理解,也可以使用生成器。

def character_generator(word_list):
    for word in word_list:
        for ch in word:
            yield ch

test_four = array("u", character_generator(["Test","One","Two"]))
for i in test_four:
    print(i)

不过,在一天结束时,u类型代码是针对单个字符的。不是字符串。