【问题标题】:Trying to create an array. Keep getting TypeError试图创建一个数组。不断收到 TypeError
【发布时间】:2019-04-23 12:02:53
【问题描述】:

我试图更好地掌握数据结构。 我一直在尝试将数组添加为另一个数组的元素,但是当我尝试创建数组时,我不断收到 TypeError: Array item must be unicode character。我正在关注我所知道的视频/我读到的所有内容。

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)

知道发生了什么吗?

【问题讨论】:

  • 'u' 类型代码对应于 Python 过时的 unicode 字符。为什么您要尝试使用array 数据类型而不是普通的list
  • @jk622 我只是想适应使用数组。数组和python中的列表有什么区别,还是我需要数组时只使用列表?
  • 一般来说,您应该使用list。除非您尝试使用可用于 array 类的特定函数,否则您要做的就是向其中的对象的数据类型添加约束。
  • 好的,我做了一些额外的阅读,什么时候使用哪个是有意义的。为什么尝试在数组中放置列表时出现类型错误?这是我看过的每个教程都显示的内容。

标签: arrays python-3.x typeerror


【解决方案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 类型代码是针对单个字符的。不是字符串。

【讨论】:

    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2012-03-10
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多