python - 将数组元素彼此分开

标签 python arrays

我试图将不同数组中连续数字的每个连续段分开。 例如,

# Input
x=[1,2,3,4,5,8,11,12,13,18]
# Output:
x=[[1,2,3,4,5],[8],[11,12,13],[18]]

现有代码,

x=[1,2,3,4,5,8,11,12,13,18]
temp=[]

firstnumber=0
for i in range(1,len(x)-1,1):
    current=x[i]
    previous=x[i-1]
    if ((current-previous)!=1):
        mm=(x[firstnumber:i-1])
        temp.append(mm)
        firstnumber=x[i]
print(temp)


结果我只得到 [[1, 2, 3, 4], []],但我不明白为什么。

最佳答案

我试图回答这个问题,并尽可能少地更改您的代码。

x=[1,2,3,4,5,8,11,12,13,18]
temp=[]

firstnumber=0
first_index = 0
for i in range(1, len(x)):
    current=x[i]
    previous=x[i-1]
    if ((current-previous)!=1):
        mm = x[first_index:i]
        temp.append(mm)
        firstnumber = x[i]
        first_index = i

temp.append(x[first_index:])

print(temp)  # [[1, 2, 3, 4, 5], [8], [11, 12, 13], [18]]

我改变了什么: firstnumber 被用作索引,但实际上是列表的一个元素,因此我们需要使用 first_index = i,即该迭代的当前索引。

循环没有覆盖列表的所有元素,我们需要一直走到列表的末尾,因此我们迭代 range(1, len(x)

最后,即使循环完成,它也会丢失最后一个序列,除非我们在循环之后添加它,因此添加 temp.append(x[first_index:])

注意:此方法将适用于您拥有的输入,但它不适用于所有情况,也不是最有效的方法,但是,您的问题是为什么它不能按原样工作,所以希望这能回答.

关于python - 将数组元素彼此分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56907675/

相关文章:

python - maybeDeferred 模拟与 asyncio

php - 将 HTML 表单请求转换为 php 数组

ruby - array[4,0] 返回 [],但 array[5,0] 返回 nil... 为什么?

php - 从二维数组 php 回显一个元素

python - 如何制作一个包含来自另一个 DataFrame 的一半数据的 DataFrame,并均匀分布在列中的值中?

python - 仅当之前出现特定字符时才匹配字符的正则表达式(条件正则表达式)

python - pwntools的p32函数很奇怪

python - 如何遍历字典中的每对项目

Java - 有类似二进制流的东西吗?

python - 如何提取单个字符串并删除其他字符串,类似于DataFrame