标签: nested-lists

在Common Lisp中找到列表中最嵌套的列表

我是Common Lisp和函数式编程的新手,但我在C,C++,C#,Java等语言方面有很多经验.我在列表中找到最嵌套的列表时遇到了麻烦.我的输入是这样的:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Run Code Online (Sandbox Code Playgroud)

我想获得这个列表中最嵌套的列表,在这种情况下是

(7)
Run Code Online (Sandbox Code Playgroud)

我确实有一个想法,我可以以某种方式压扁列表,直到只剩下一个子列表.为了说明我的意思,这里有几个步骤:

第1步 - 输入:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Run Code Online (Sandbox Code Playgroud)

第2步 - 在"第一级"上展平:

(0 1 2 3 4 5 (6 (7) 8) 9)
Run Code Online (Sandbox Code Playgroud)

第3步 - 在"第二级"上展平:

(0 1 2 3 4 5 6 (7) 8 9)
Run Code Online (Sandbox Code Playgroud)

现在只剩下一个嵌套列表,这意味着这是最嵌套的列表.但是我发现这里有两个或更多这样的列表会出现问题.请分享您对此的看法.

我在Common Lisp中将此过程变为现实时遇到了问题,所以我会感谢一些正确方向的指针,可能是一些示例代码等等.这是一项家庭作业,所以我真的不希望有一个完整的解决方案,但如果有人指出可能是一个更简单,更好的解决方案及其实施,那将会很高兴.

lisp common-lisp nested-lists

6
推荐指数
1
解决办法
3556
查看次数

如果嵌套列表有1个元素,如何删除Scheme中嵌套列表中的周围括号?

说我有这个清单: (a b ((c)) (d + e) ((e + f)) (g) () h)

如何获得以下列表(最好带有功能):(a b c (d + e) (e + f) g h)

换一种说法:

  • 如果嵌套列表只有一个元素,则将其简化为元素.((c))在上面的例子中,这简化为c.也((e + f))变成了(e + f).

  • 如果嵌套列表包含多个元素,则它保持不变.这(d + e)仍然(d + e)如上例所示.

  • 如果嵌套列表为null,则只删除它.

最后,我不确定在这种情况下flatten一词是否适用.我希望我的问题很明确.如果没有,请告诉我.

提前致谢!

recursion scheme list nested-lists flatten

6
推荐指数
1
解决办法
5667
查看次数

有效地迭代python嵌套列表

我正在使用Python进行网络流量监控项目.不熟悉Python,所以我在这里寻求帮助.

简而言之,我正在检查流量和流量,我这样写:

for iter in ('in','out'):
        netdata = myhttp()
        print data
Run Code Online (Sandbox Code Playgroud)

netdata是一个由嵌套列表组成的列表,其格式如下:

[ [t1,f1], [t2,f2], ...]
Run Code Online (Sandbox Code Playgroud)

这里t代表的是时刻,f是流动.但是我只想在这个时刻保留这些f进行内外,我想知道如何获得有效的代码.

经过一些搜索,我认为我需要使用创建流量列表(2个元素),然后使用zip函数同时迭代这两个列表,但是我很难写出正确的列表.由于我的netdata是一个很长的列表,效率也非常重要.

如果有任何令人困惑的事情,请告诉我,我会尽力澄清.感谢帮助

python nested-lists

6
推荐指数
1
解决办法
1万
查看次数

如何将子列表拆分为子列表k次?(蟒蛇)

我知道我可以使用以下方法将列表拆分为相同大小的子列表:

segment = len(list)//k
sub_lists = [list[i:i+segment] for i in range(0, len(list), segment)]
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何将长度为k ^ m的列表拆分为子列表,然后是其他子列表,直到每个子列表的长度为1.

例如:

k = 2
list = [1, 2, 3, 4, 5, 6, 7, 8]
list = [[1, 2, 3, 4], [5, 6, 7, 8]]
list = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
list = [[[[1], [2]], [[3], [4]]], [[[5], [6]], [[7], [8]]]]
Run Code Online (Sandbox Code Playgroud)

每当我试图循环这个时,我就会被打结,是否有捷径?

python list nested-lists

6
推荐指数
1
解决办法
93
查看次数

在Python中绘制同一图表中的列表列表

我试图描绘(x,y)在哪里y = [[1,2,3],[4,5,6],[7,8,9]].

说,len(x) = len(y[1]) = len(y[2]).. y的长度由用户输入决定.我想在同一个图中绘制y的多个图,即(x, y[1],y[2],y[3],...).当我尝试使用循环时,它说dimension error.

我也尝试过: plt.plot(x,y[i] for i in range(1,len(y)))

我该如何策划?请帮忙.

for i in range(1,len(y)):
plt.plot(x,y[i],label = 'id %s'%i)
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib nested-lists

6
推荐指数
2
解决办法
3万
查看次数

如何在Python2中处理可变长度子列表解包?

如何在Python2中处理可变长度子列表解包?

在Python3中,如果我有可变的子列表长度,我可以使用这个成语:

>>> x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
>>> for i, *item in x:
...     print (item)
... 
[2, 3, 4, 5]
[4, 6]
[5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

在Python2中,它是一个无效的语法:

>>> x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
>>> for i, *item in x:
  File "<stdin>", line 1
    for i, *item in x:
           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这个问题与解释最大大小为n的可变长度列表的惯用法有一点不同,其中解决方案需要固定长度的知识.

这个问题特定于解决Python2中的问题.

python list nested-lists python-2.7

6
推荐指数
1
解决办法
501
查看次数

在没有 recursive=FALSE 的情况下展平列表的列表

我有一个列表,其中包含一些其他列表,但也包含非列表的其他对象,例如数据框。我想将其展平为单个列表,但通常的建议(请参阅如何展平列表列表?将列表列表转换为单个列表)将unlist(..., recursive = FALSE)不起作用,因为它data.frame也可以在 上运行。

> d <- list(list(a = 1, b = 2), c = data.frame(1:4))
> d
[[1]]
[[1]]$a
[1] 1

[[1]]$b
[1] 2


$c
  X1.4
1    1
2    2
3    3
4    4
> unlist(d, recursive = FALSE)
$a
[1] 1

$b
[1] 2

$c.X1.4
[1] 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

预期的结果是$c保留相同的data.frame结构。

到目前为止,我唯一的解决方案是在unlisting 之前向所有非列表对象添加一个额外的列表层,但这是一个非常不优雅的解决方案。

> unlist(lapply(d, function(x) if(!inherits(x, "list")) list(x) else x), recursive = …
Run Code Online (Sandbox Code Playgroud)

r list nested-lists

6
推荐指数
1
解决办法
222
查看次数

如何绘制气泡并将其动画化为圆圈

我正在尝试制作一个 python 程序来绘制一条线,然后使用 pygame 将其变成带有动画的圆圈,但我什至还没有完成绘制线的代码。我注意到python正在更改列表中的错误或两个项目,其中包含用户按下左键单击时的起点,存储为第一个项目,用户鼠标的当前点存储为第二个项目。

这通常是我想要它做的: https: //youtu.be/vlqZ0LubXCA

以下是包含和不包含更新第二项的行的结果:

和:

该代码将在每一帧的鼠标位置绘制一个像素,而不是从起始位置到鼠标位置的一条线

没有:

如果没有线条,前一帧不会被覆盖,并且从起始位置到鼠标在每一帧的顶部不断绘制新线条

正如您所看到的或在描述中阅读的,这条线是覆盖前一帧所必需的。

我用箭头标记了改变结果的行:

import pygame, PIL, random
print('\n')

#data
bubbles = []
color_options = [[87, 184, 222]]

pressed = False
released = False
bubline_start = []

background = [50, 25, 25]
size = [500, 500]

#pygame
display = pygame.display.set_mode(size)
pygame.init()

#functions
def new_bub_color():
    color_index = random.randint(0, len(color_options)-1)
    lvl = random.randrange(85, 115)

    bub_color = []
    for val in color_options[color_index]:
        bub_color.append(val*(lvl/100))
    return bub_color


def bubble_line():
    global display, pressed, bubline_start, released, bubbles, color_options …
Run Code Online (Sandbox Code Playgroud)

python pygame list nested-lists

6
推荐指数
1
解决办法
466
查看次数

R 中子子列表元素的向量化替换

我有一个有点复杂的数据结构(嵌套列表)y,定义为:

x <- list(
  list(1, "a", 2, "b", 0.1),
  list(3, "c", 4, "d", 0.2),
  list(5, "e", 6, "f", 0.3)
)
y <- rep(list(x), 10)
Run Code Online (Sandbox Code Playgroud)

我还有一个数据框df,定义为:

df <- data.frame(
  x1 = c( 0.33, 1.67, -0.62, -0.56,  0.17, 0.73,  0.59,  0.56, -0.22, 1.49),
  x2 = c(-0.82, 1.22,  0.65,  0.54, -2.26, 1.21, -0.44, -0.92, -0.56, 0.50),
  x3 = c(-0.16, 0.49, -0.82, -0.71,  0.13, 1.22,  1.23, -0.01, -1.11, 0.97)
)
Run Code Online (Sandbox Code Playgroud)

其中列名并不重要。

我想将所有和替换y[[i]][[j]][[5]]为。我的 Python/Julia 大脑在循环中工作得最好,因此我通过循环,然后循环 的元素(每个 的副本)来完成此操作,如下所示:df[[i, j]] …

loops r vectorization nested-lists

6
推荐指数
1
解决办法
140
查看次数

查找嵌套列表中 nan 元素的索引并将其删除

names=[['Pat','Sam', np.nan, 'Tom', ''], ["Angela", np.nan, "James", ".", "Jackie"]]
values=[[1, 9, 1, 2, 1], [1, 3, 1, 5, 10]]
Run Code Online (Sandbox Code Playgroud)

我有 2 个列表:namesvalues。每个值都带有一个名称,即与Pat值相对应1Sam与值相对应9

我想删除nanfromnames和相应的值values

也就是说,我想要一个new_names如下所示的列表:

[['Pat','Sam', 'Tom', ''], ["Angela", "James", ".", "Jackie"]]
Run Code Online (Sandbox Code Playgroud)

和一个new_values如下所示的列表:

[[1, 9, 2, 1], [1, 1, 5, 10]]
Run Code Online (Sandbox Code Playgroud)

我的尝试是首先找到这些nan条目的索引:

all_nan_idx = []
for idx, name in enumerate(names):
  if pd.isnull(name):
  all_nan_idx.append(idx)
Run Code Online (Sandbox Code Playgroud)

但是,上面没有考虑嵌套列表。

python list nested-lists

6
推荐指数
1
解决办法
119
查看次数