用 class 实例替换列表元素
Replace list element with class instance
我有一个 class 可以将 [1, 2] 之类的列表转换为符号。它需要 2 个位置参数,对应于列表中的每个元素。我正在制作另一个函数,它接受参数列表,例如这个列表:
lst = [[1,2], None, [1,1]]
并将其转换为具有符号 ◇ ◯ 的列表,而不是子列表。我编写了这段代码来执行此操作,但它告诉我列表索引必须是整数,而不是列表。
newlist = [SymbolClass(l[l][0],l[l][1]) if l is not None else l for l in lst]
我应该如何更改我的代码才能使其正常工作?
您正在尝试使用 l
为列表编制索引,但 l
是列表元素,而不是索引。尝试
newlist = [SymbolClass(l[l][0],l[l][1]) if l is not None else l for l in range(len(lst))]
顺便说一句,l
并不是一个很好的 single-character 变量名,因为它通常看起来像数字 1
.
但是,没有必要使用显式索引。一种更简洁的写法是
newlist = [SymbolClass(x[0],x[1]) if x is not None else x for x in lst]
我有一个 class 可以将 [1, 2] 之类的列表转换为符号。它需要 2 个位置参数,对应于列表中的每个元素。我正在制作另一个函数,它接受参数列表,例如这个列表:
lst = [[1,2], None, [1,1]]
并将其转换为具有符号 ◇ ◯ 的列表,而不是子列表。我编写了这段代码来执行此操作,但它告诉我列表索引必须是整数,而不是列表。
newlist = [SymbolClass(l[l][0],l[l][1]) if l is not None else l for l in lst]
我应该如何更改我的代码才能使其正常工作?
您正在尝试使用 l
为列表编制索引,但 l
是列表元素,而不是索引。尝试
newlist = [SymbolClass(l[l][0],l[l][1]) if l is not None else l for l in range(len(lst))]
顺便说一句,l
并不是一个很好的 single-character 变量名,因为它通常看起来像数字 1
.
但是,没有必要使用显式索引。一种更简洁的写法是
newlist = [SymbolClass(x[0],x[1]) if x is not None else x for x in lst]