Python请写一程序产生一新序列,将由0和1所组成的数列。
怎么用Python写代码求这个??
你可以本地运行试一下啊
def transform_sequence(sequence):
transformed_sequence = []
count = 0
for num in sequence:
if num == 1:
count += 1
else:
if count > 0:
transformed_sequence.append(count)
transformed_sequence.append(0)
count = 0
if count > 0:
transformed_sequence.append(count)
return transformed_sequence
# 测试示例
sequence = [1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0]
transformed_sequence = transform_sequence(sequence)
print(transformed_sequence)
import itertools as it
a = [1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0]
result = [[i, len(list(v))] for i, v in it.groupby(a)]
res = []
[res.extend([c] if v == 1 else [0] * c) for v, c in result]
print(res)
排序是指将元素按有序顺序排列。
问题解答:
import numpy as np
arr = np.array([1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0])
new_arr = []
count = 0
for i in range(len(arr)):
if arr[i] == 1:
count += 1
else:
if count != 0:
new_arr.append(count)
count = 0
new_arr.append(0)
if count != 0:
new_arr.append(count)
print(new_arr)
输出结果为:[2, 0, 1, 0, 0, 4, 0, 0, 0, 1, 0]
步骤解析: 1. 创建一个示例数组arr,其值为[1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0]; 2. 创建一个新数组new_arr,用于存储新的数列; 3. 创建一个变量count,用于统计连续出现的1的次数; 4. 遍历示例数组arr,如果当前值为1,则让count自增;如果当前值为0,则判断count是否为0,如果不为0则将count添加到新数组中,然后将count重置为0,最后将0添加到新数组中; 5. 判断遍历结束后count是否为0,若不为0则将其添加到新数组中; 6. 输出新数组new_arr,即为将示例数组arr转换后的结果。
参考资料: Numpy 官方文档:https://numpy.org/doc/stable/index.html