我有一个二进制数列表,列表中约有100个元素:
a='11010010'
n = 2
split=[a[i:i+n] for i in range(0, len(a), n)]
结果显示如下:
split =['11', '01', '00', '10', '01', '10', '11'.....]
我的问题是,如果其他人在为我的列表循环,该如何分配?问题是列表需要根据元素的值自动更新。
例如,如果'11'=3*2, '01'=7*4, '00'=5*6, '10'=4*8
我希望我的结果更新为:
split =[6,28,30,32,28,32, 6 .....]
非常感谢! ;)
答案 0 :(得分:1)
问题是列表需要根据以下内容自动更新 元素的值。
搁置您对我不清楚的问题的其余部分,您可以通过词典实现此目标。首先定义一个字典映射:
d = {'11': 6, '01': 28, '00': 30, '10': 32}
然后使用map
或列表理解,将映射应用于列表的元素:
# map
res = list(map(d.get, split))
# list comprehension
res = [d[i] for i in split]
print(res)
[6, 28, 30, 32, 28, 32, 6]
答案 1 :(得分:0)
鉴于encode
不是标准的python函数,并且说'11'= 3 * 2没有多大意义,但这是一个非常不清楚的问题,但我会尽力指出在正确的方向上。
Python中的许多if-else
循环都可以通过list comprehensions完成。这些结构使您可以根据指定的条件和循环构造列表。它们通常具有以下结构
[value(i) for i in list if condition else value2(i)]
您可以尝试使用它来解决您的问题!