根据 python 中的条件将列表元素转换为 1 和 0
convert list element to 1 and 0 based on conditions in python
假设我有一个字符串列表如下:
mylist = ['x','y','z','a','b','c']
我想select某一个元素然后把它们转成1,剩下的元素转成0。比如我想select'z','b','c',因此结果列表将是 [0, 0, 1, 0, 1, 1]
我尝试使用列表理解,但我不太熟悉应该如何精确地完成这项工作。我有以下,但它似乎不起作用
[1 for i in mylist if i in ['z','b','c']]
您需要在列表理解中使用 if/else 语句。
In [7]: [1 if i in 'zbc' else 0 for i in mylist]
Out[7]: [0, 0, 1, 0, 1, 1]
您可以使用列表理解:
mylist = ['x','y','z','a','b','c']
output = [int(u in 'zbc') for u in mylist]
print(output) # [0, 0, 1, 0, 1, 1]
表达式u in 'zbc'
有效,因为每一项都是一个字符。如果(更一般地)项目是字符串,那么您可能想改用 u in ('something', 'like', 'this')
。
您还可以 count:
result = [*map('zbc'.count, mylist)]
或者对于更长的字符串:
[*map(('foo', 'bar', 'qux').count, mylist)]
假设我有一个字符串列表如下:
mylist = ['x','y','z','a','b','c']
我想select某一个元素然后把它们转成1,剩下的元素转成0。比如我想select'z','b','c',因此结果列表将是 [0, 0, 1, 0, 1, 1] 我尝试使用列表理解,但我不太熟悉应该如何精确地完成这项工作。我有以下,但它似乎不起作用
[1 for i in mylist if i in ['z','b','c']]
您需要在列表理解中使用 if/else 语句。
In [7]: [1 if i in 'zbc' else 0 for i in mylist]
Out[7]: [0, 0, 1, 0, 1, 1]
您可以使用列表理解:
mylist = ['x','y','z','a','b','c']
output = [int(u in 'zbc') for u in mylist]
print(output) # [0, 0, 1, 0, 1, 1]
表达式u in 'zbc'
有效,因为每一项都是一个字符。如果(更一般地)项目是字符串,那么您可能想改用 u in ('something', 'like', 'this')
。
您还可以 count:
result = [*map('zbc'.count, mylist)]
或者对于更长的字符串:
[*map(('foo', 'bar', 'qux').count, mylist)]