GVKun编程网logo

如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂(python堆叠加并列柱形图)

1

本文将为您提供关于如何在Python中“堆叠”嵌套列表?原始解决方案-更复杂的详细介绍,我们还将为您解释python堆叠加并列柱形图的相关知识,同时,我们还将为您提供关于dplyr::mutate()

本文将为您提供关于如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂的详细介绍,我们还将为您解释python堆叠加并列柱形图的相关知识,同时,我们还将为您提供关于dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表? 将值重新编码为小写和下划线 编辑、javascript-如何使用JS / Jquery替换重复的CSS样式-嵌套列表、Markdown 嵌套列表:跳过一个级别、PHP:如果 SHA512 比 SHA256 更复杂,为什么 SHA512 比 SHA256 使用一点时间?的实用信息。

本文目录一览:

如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂(python堆叠加并列柱形图)

如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂(python堆叠加并列柱形图)

如何解决如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂

如何重塑嵌套列表,以便所有嵌套项都嵌套在之前的项中?

例如

  1. ex1 = [1,[2,20],[3,30],[4]]
  2. ex2 = [1,[2]]
  3. ex3 = [1]

预期输出如下:

  1. ex1 = [1,20,30,[4]]]]
  2. ex2 = [1,[2]]
  3. ex3 = [1]

我想我想做与扁平化列表相反的事情。

原始列表结构可以嵌套任意长度的对象,但这些嵌套对象本身永远不会包含嵌套对象。

也可能有零个嵌套对象。

编辑:我已修复的示例中的错误(我认为)

edit2:遗漏了一些重要的说明,现在添加

解决方法

只要列表长于 2,大概它就会包含我们需要堆叠的子列表,所以弹出最后一个并堆叠它。

  1. def stack(L):
  2. """Note: Mutates L"""
  3. while len(L) > 2:
  4. last = L.pop()
  5. L[-1].append(last)
  1. >>> stack(ex1)
  2. >>> ex1
  3. [1,[2,20,[3,30,[4]]]]
  4. >>> stack(ex2)
  5. >>> ex2
  6. [1,[2]]
  7. >>> stack(ex3)
  8. >>> ex3
  9. [1]

原始解决方案 - 更复杂

沿列表向后迭代,将每个子列表附加到它之前的子列表,然后将其从顶级列表中删除。虽然,如果顶级列表少于 3 个元素,它可能已经是正确的。

  1. def stack(L):
  2. """Note: Mutates L"""
  3. if len(L) < 3:
  4. return
  5. prev = L[-1] # For use in loop
  6. for sublist in L[-2:0:-1]: # Backwards from second-last to second
  7. sublist.append(prev)
  8. del L[-1]
  9. prev = sublist # For next iteration

dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表? 将值重新编码为小写和下划线 编辑

dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表? 将值重新编码为小写和下划线 编辑

如何解决dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表? 将值重新编码为小写和下划线 编辑

有时,我的更高级别 tibble 中的嵌套列表是 NULL。我想在使用 dplyr::mutate()忽略这些列表。

示例

将值重新编码为小写和下划线

数据

  1. library(tibble)
  2. df <-
  3. tibble(movies = c("The Shawshank Redemption","The Godfather","The Godfather: Part II","The Dark Knight","12 angry Men"),continents = c("Asia","Australia","America","Africa","Europe"),michaels = c("Michael Jackson","Michael Jordan","Mike Tyson","Michael Phelps","Michael Schumacher"))
  4. df <- add_column(df,ignore_me = list(NULL))
  5. df
  6. ## # A tibble: 5 x 4
  7. ## movies continents michaels ignore_me
  8. ## <chr> <chr> <chr> <list>
  9. ## 1 The Shawshank Redemption Asia Michael Jackson <NULL>
  10. ## 2 The Godfather Australia Michael Jordan <NULL>
  11. ## 3 The Godfather: Part II America Mike Tyson <NULL>
  12. ## 4 The Dark Knight Africa Michael Phelps <NULL>
  13. ## 5 12 angry Men Europe Michael Schumacher <NULL>

尝试重新编码值

  1. library(dplyr) # version 1.0.2
  2. library(snakecase)
  3. df %>%
  4. mutate(across(everything(),snakecase::to_any_case))

错误:mutate() 输入 ..1 有问题。
x 参数不是字符向量
i 输入 ..1across(everything(),snakecase::to_any_case)


显然,以下任一方法都可以:

  1. df %>% mutate(across(c(movies,continents,michaels),snakecase::to_any_case))
  2. # or
  3. df %>% mutate(across(-ignore_me,snakecase::to_any_case))
  4. ## movies continents michaels ignore_me
  5. ## <chr> <chr> <chr> <list>
  6. ## 1 the_shawshank_redemption asia michael_jackson <NULL>
  7. ## 2 the_godfather australia michael_jordan <NULL>
  8. ## 3 the_godfather_part_ii america mike_tyson <NULL>
  9. ## 4 the_dark_knight africa michael_phelps <NULL>
  10. ## 5 12_angry_men europe michael_schumacher <NULL>

但实际上我不能期望哪个列/嵌套列表会是 NULL,因此我需要我的代码简单地忽略这样的 NULL 但仍然适用在非 NULL 列上。


编辑


上面的原始 df 可以通过完全忽略 list 来轻松解决问题。但数据通常也可以是:

  1. df_2 <-
  2. tibble(movies = c("The Shawshank Redemption","Michael Schumacher"))
  3. df_2 <- add_column(df_2,ignore_me = list(NULL))
  4. set.seed(2021) ; df_2 <- mutate(df_2,across(sample(colnames(df_2),1),as.list))
  5. df_2
  6. ## movies continents michaels ignore_me
  7. ## <chr> <chr> <list> <list>
  8. ## 1 The Shawshank Redemption Asia <chr [1]> <NULL>
  9. ## 2 The Godfather Australia <chr [1]> <NULL>
  10. ## 3 The Godfather: Part II America <chr [1]> <NULL>
  11. ## 4 The Dark Knight Africa <chr [1]> <NULL>
  12. ## 5 12 angry Men Europe <chr [1]> <NULL>

解决方法

您可以忽略所有列表列:

  1. library(dplyr)
  2. df %>% mutate(across(where(Negate(is.list)),snakecase::to_any_case))

或者如果不是所有的 list 列都将是 NULL,您可以通过检查它们的长度来专门找到具有 NULL 值的列并忽略长度为 0 的列.

  1. df %>% mutate(across(where(~!all(lengths(.) == 0)),snakecase::to_any_case))
  2. # movies continents michaels ignore_me
  3. # <chr> <chr> <chr> <list>
  4. #1 the_shawshank_redemption asia michael_jackson <NULL>
  5. #2 the_godfather australia michael_jordan <NULL>
  6. #3 the_godfather_part_ii america mike_tyson <NULL>
  7. #4 the_dark_knight africa michael_phelps <NULL>
  8. #5 12_angry_men europe michael_schumacher <NULL>

对于修改后的 df_2,我们可以使用:

  1. df_2$michaels[[3]] <- c(df_2$michaels[[3]],df_2$michaels[[4]])
  2. df_2 %>%
  3. mutate(across(where(~all(lengths(.) > 0)),~relist(to_any_case(unlist(.)),.)))
  4. # movies continents michaels ignore_me
  5. # <chr> <chr> <list> <list>
  6. #1 the_shawshank_redemption asia <chr [1]> <NULL>
  7. #2 the_godfather australia <chr [1]> <NULL>
  8. #3 the_godfather_part_ii america <chr [2]> <NULL>
  9. #4 the_dark_knight africa <chr [1]> <NULL>
  10. #5 12_angry_men europe <chr [1]> <NULL>
,

添加 purrr 的一个选项可能是:

  1. df %>%
  2. mutate(across(where(~ !all(map_lgl(.,is.null))),to_any_case))
  3. movies continents michaels ignore_me
  4. <chr> <chr> <chr> <list>
  5. 1 the_shawshank_redemption asia michael_jackson <NULL>
  6. 2 the_godfather australia michael_jordan <NULL>
  7. 3 the_godfather_part_ii america mike_tyson <NULL>
  8. 4 the_dark_knight africa michael_phelps <NULL>
  9. 5 12_angry_men europe michael_schumacher <NULL>

对于第二个数据集:

  1. df_2 %>%
  2. mutate(across(where(~ !all(map_lgl(.,~ to_any_case(unlist(.))))
  3. movies continents michaels ignore_me
  4. <chr> <chr> <chr> <list>
  5. 1 the_shawshank_redemption asia michael_jackson <NULL>
  6. 2 the_godfather australia michael_jordan <NULL>
  7. 3 the_godfather_part_ii america mike_tyson <NULL>
  8. 4 the_dark_knight africa michael_phelps <NULL>
  9. 5 12_angry_men europe michael_schumacher <NULL>

javascript-如何使用JS / Jquery替换重复的CSS样式-嵌套列表

javascript-如何使用JS / Jquery替换重复的CSS样式-嵌套列表

我正在制作一个嵌套列表,希望悬浮样式能够覆盖其容器的整个宽度.为了做到这一点,我要从ul中删除默认边距,并在li内的div上应用padding-left,但这意味着代码很多.见下文或DEMO

ul { list-style: none; padding: 0; margin:0 }
li { margin:0; padding: 0;}
li > div:hover { background-color: #eee}

li div{padding-left:0px}
li li div{padding-left:20px}
li li li div{padding-left:40px}
li li li li div{padding-left:60px}

在创建文件树时,我无法继续应用这些样式,因此层次结构可能会永远持续下去.有人知道我可以在jQuery中做到这一点的有效方法吗?非常感谢

解决方法:

这里有一些代码可以满足您的需求:

$('div:not(:first)').each(function(){
    var numEl = $(this).parentsUntil('div:first', 'ul').length - 1;
    $(this).css('padding-left', numEl * 20 +'px')
})

它计算ul的数量,直到您击中根并添加填充.

小提琴:http://jsfiddle.net/MKK8v/26/

编辑:

由于性能问题,这里是10倍faste的优化​​代码:

$('ul').each(function(){
    var $this = $(this);
    var index = $this.parents('ul').length == 0 ? 0 : getIndex($this);
    $this.data('index', index);
})

function getIndex(el){
    return parseInt(el.parents('ul').first().data('index'))+1
}

$('div:not(:first)').each(function(){
    var numEl = $(this).closest('ul').data('index');
    $(this).css('padding-left', numEl * 20 +'px')
})

而不是遍历所有div的所有父级,而是检查放置在数据中的ul索引.

小提琴:http://jsfiddle.net/MKK8v/33/

Markdown 嵌套列表:跳过一个级别

Markdown 嵌套列表:跳过一个级别

如何解决Markdown 嵌套列表:跳过一个级别

我在 Markdown 中使用嵌套的项目符号列表。在某些情况下,关卡必须从深度 1 跳到深度 3,如下所示:

这可以在纯 Markdown 中完成吗? (显然它可以在 HTML 中完成,如上所述。)我尝试的东西不起作用:

  1. * Lowest level
  2. - Level 3

(第 3 级项目符号前有 2x4 个空格)变为

  • 最低级别 - 3级

将所有内容放在一行中。

  1. * Lowest level
  2. - Level 3

(第一行末尾有两个空格)显示为

  • 最低级别
    - 3级

其中 Level 3 不是嵌套列表:它实际上是第一个项目符号的一部分,它有一个内部的 <br> 换行符。

  1. * Lowest level
  2. *
  3. * Level 3

再次将所有内容集中到一个项目中:

  • 最低级别 * * 3 级

可以吗?

解决方法

您可以使用假的 3 级物品来实现这种外观。您可以使用不间断空格和 ⦁ (Z NOTATION SPOT) 字符来构建它们。

来源:

  1. - Lowest level[space][space]
  2. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;⦁ &nbsp;&nbsp;Level 3: **this skipped level 2**[space][space]
  3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;⦁ &nbsp;&nbsp;3 again
  4. - Level 2
  5. - Back at level 1

结果:

  • 最低级别
    ⦁ 第 3 级:此跳过了第 2 级
    ⦁ 3 再次
    • 2 级
  • 回到 1 级

为了进行比较,这是一个包含 3 个级别的真实列表:

  • 1 级
    • 2 级
      • 级别 3

PHP:如果 SHA512 比 SHA256 更复杂,为什么 SHA512 比 SHA256 使用一点时间?

PHP:如果 SHA512 比 SHA256 更复杂,为什么 SHA512 比 SHA256 使用一点时间?

如何解决PHP:如果 SHA512 比 SHA256 更复杂,为什么 SHA512 比 SHA256 使用一点时间?

这段代码对我的测试来说是钝的?

  1. error_reporting(E_ALL);
  2. ini_set(''display_errors'',1);
  3. $p = ''abc'';
  4. $i = microtime(1);
  5. echo hash(''SHA256'',$p);
  6. echo ''<hr />'';
  7. var_dump(number_format(microtime(1) - $i,7));
  8. echo ''<hr />'';
  9. $i = microtime(1);
  10. echo hash(''SHA512'',7));
  11. echo ''<hr />'';

为什么我总是在第二行和第一行得到时间片段?

SHA512 更有效还是我的“基准”很荒谬?

关于如何在 Python 中“堆叠”嵌套列表? 原始解决方案 - 更复杂python堆叠加并列柱形图的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表? 将值重新编码为小写和下划线 编辑、javascript-如何使用JS / Jquery替换重复的CSS样式-嵌套列表、Markdown 嵌套列表:跳过一个级别、PHP:如果 SHA512 比 SHA256 更复杂,为什么 SHA512 比 SHA256 使用一点时间?的相关知识,请在本站寻找。

本文标签: