gpt4 book ai didi

python - 为列表理解切片列表但保留切片值

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:24 25 4
gpt4 key购买 nike

我想用 bool 值替换 items[1]items[2]items[3]或不是该值为 None。这有效,但从输出中消除了 items[0]items[4]items[5]。我可以插入/追加这些值,但我认为必须有一种方法可以在一行中完成。

my_list = [[10,30,None,20,30,40],[10,20,None,10,30,40]]
booleans = [[1 if item is None else 0 for item in each_list[1:-2]] for each_list in my_list]
print booleans

预期输出:

[[10, 0, 1, 0, 30, 40], [10, 0, 1, 0, 30, 40]]

最佳答案

你很近,你可以使用enumerate在遍历内部列表并测试索引是否在应修改的集合中时。这使您可以通过简单地修改 tests 集来轻松修改应测试的索引,并且不需要某种难以轻松修改的切片形式。

my_list = [[10,30,None,20,30,40],[10,20,None,10,30,40]]
tests = {1, 2, 3}

new_list = [[v if i not in tests else 1 if v is None else 0 for i, v in enumerate(x)]
for x in my_list]

print(new_list)
# [[10, 0, 1, 0, 30, 40], [10, 0, 1, 0, 30, 40]]

但就我个人而言,在这种情况下我不会使用列表理解,因为它丑陋。下面的代码完全相同,而且可读性更强:

my_list = [[10,30,None,20,30,40],[10,20,None,10,30,40]]
tests = {1, 2, 3}

for x in my_list:
for i, v in enumerate(x):
if i in tests:
x[i] = 1 if v is None else 0

print(my_list)
# [[10, 0, 1, 0, 30, 40], [10, 0, 1, 0, 30, 40]]

关于python - 为列表理解切片列表但保留切片值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com