今天有一个同事给我出了一个这样的问题:
你如何把list of list 变成list 比如[[1,2],[3]] --> [1,2,3]
程序的目的就是将一个递归的列表转化为一个普通的”单”列表
本来这个程序是可以使用一个简单的方法来实现的:
先定义一个全局的列表,然后遍历列表中的元素,如果是元素就加入到全局列表,
但如果是列表,那就用递归或是迭代的方式继续遍历它。
今天有一个同事给我出了一个这样的问题:
你如何把list of list 变成list 比如[[1,2],[3]] --> [1,2,3]
程序的目的就是将一个递归的列表转化为一个普通的”单”列表
本来这个程序是可以使用一个简单的方法来实现的:
先定义一个全局的列表,然后遍历列表中的元素,如果是元素就加入到全局列表,
但如果是列表,那就用递归或是迭代的方式继续遍历它。
上大学的时候,我就一直疑惑这个制表符有什么用?
但是我当时怕被人鄙视,所有一直没敢问别人。
后来我发现,不仅仅是我,我的一些同学也在不知道。(因为确实不是那个年代的人)
这是早期人们在“绘制”无边框表格的时候必备的东西,
那时候只有纯字符文本,所以表格只能使用文本列对齐的方式实现。
一般的编辑器都可以设置tab键的长度(默认是8个空格长)。
当你输入一个单词后(比如apple 5个字符),按下制表符,那么光标会自动跳到第8个光标位置(相对于行首),和单词长度加起来刚好能被8整除,然后你就可以输入第二个单词了。
这样一行一行下去,每一行都已8个字符长度为单位进行列对齐。
apple pear banana orange
dogdog catcat rabbit monkey
而且,即使你在apple的后面输入一个字符s,也不会影响到这一行的其它字符的位置。
这就是制表符本来的作用。
之后渐渐这个键有了别的作用,比如用它来控制缩进,或者作为补全文本的快捷键。
当然作为缩进,使用空白符还是制表符,这就是一场漫无边际的争吵。
作为python这门语言来说,官方建议是使用空格,因为不同的人设置不同的tab键长度,这样看上去很难看。
所以有的人会将自己的编辑器配置为 “当按下制表符时,自动输入4个空格“。
还是对这样的文本进行列对齐的实现
apple pear banana orange
dog cat rabbit monkey bunny cow
sky moon grubby tod fly100%
之前的实现过这个功能 使用python对齐文本列,基本上是函数式的编程风格。
最近经常要生成一些分析数据,这些数据看上去就像是文本表格。
apple pear banana orange
dog cat rabbit monkey
sky moon grubby tod
但是这些数据没有对齐,对于我这样的强迫症很是受不了。
所以我用python写了如下代码:
之前的项目有这样一个需求,“在会议室申请时需要判断新的申请时间段是否与已存在的会议室申请时间段冲突”
这个问题的本质就是判断两个区间是否有交集。
当然这里的区间与常见的编程区间不同,编程中讨论的区间是这样的:[begin, end)
而我要判断的是两个时间段是否冲突,所以我这里指的区间是闭区间:[begin, end]
1 | bool CollisionRange(Range this, Range other) |
早些年在初学html的时候,经常用类C的注释语法来注释html代码,比如/**/
和 //
。
当然这些都是不能通过的,正确的方式只能是:
<!-- This is a comment -->
然而html不是不能包含这些类C的注释,你可以在html的源码中,那些直接内嵌css和javascript的地方看见这些注释。
之所以html不支持这种写法,是因为DOM(对象文档模型)的原因。 html必须符合DOM的要求,由节点来构成一棵Dom树。
它的节点都是<x>
这样的元素构成的,只不过有的节点内部不会在包含其它元素,比如<hr>
,而有的节点是要包含其它节点的。比如<a> ... </a>
即使是注释,也要符合DOM的要求,所以html代码的注释只能是这个样子了:
<!-- This is a comment -->
好吧,我其实也不知道自己为什么要写这么一篇Blog。有的时候我都怀疑自己是不是处女座的。虽然我不信星座这种东西,同时我也觉得星座也就能用来骗骗妹子。
可是每每当自己在写 if语句 和看到一些同事写的 很糟糕的if语句 时,我就忍不住去想:怎样写才好?
目录
这其实并不是写法的问题,其实我发现真的有人会把该用 if ... else if ... else if ... else
的地方写成 if ... if
。表面上看起来没问题,其实他们确实是误打误撞,当出错的时候原因是什么都不知道。
首先请看下面两段代码: