标签: list-manipulation

如何在不修改任何一个列表的情况下获取Python中两个列表的串联?

在Python中,我可以找到连接两个列表的唯一方法是list.extend修改第一个列表.是否有任何串联函数返回其结果而不修改其参数?

python concatenation sequence list-manipulation

636
推荐指数
7
解决办法
85万
查看次数

一些内置的用于在python中填充列表

我有一个大小< N的列表,我想用一个值填充大小为N.

当然,我可以使用类似下面的东西,但我觉得应该有一些我错过的东西:

>>> N = 5
>>> a = [1]
>>> map(lambda x, y: y if x is None else x, a, ['']*N)
[1, '', '', '', '']
Run Code Online (Sandbox Code Playgroud)

python list list-manipulation

91
推荐指数
8
解决办法
4万
查看次数

如何从列表中删除每个出现的子列表

我有两个清单:

big_list = [2, 1, 2, 3, 1, 2, 4]
sub_list = [1, 2]
Run Code Online (Sandbox Code Playgroud)

我想删除big_list中的所有sub_list事件.

结果应该是 [2, 3, 4]

对于字符串,您可以使用此:

'2123124'.replace('12', '')
Run Code Online (Sandbox Code Playgroud)

但AFAIK这对列表不起作用.

这不是从列表删除子列表的重复,因为我想从大列表中删除所有子列表.在另一个问题中,结果应该是[5,6,7,1,2,3,4].

更新:为简单起见,我在此示例中使用了整数.但列表项可以是任意对象.

UPDATE2:

如果big_list = [1, 2, 1, 2, 1]sub_list = [1, 2, 1],我希望结果是[2, 1](像'12121'.replace('121', ''))

UPDATE3:

我不喜欢将StackOverflow中的源代码复制+粘贴到我的代码中.这就是我在软件建议中提出第二个问题的原因:https://softwarerecs.stackexchange.com/questions/51273/library-to-remove-every-occurrence-of-sub-list-from-list-python

Update4:如果您知道要进行此方法调用的库,请将其写为答案,因为这是我首选的解决方案.

测试应通过此测试:

def test_remove_sub_list(self):
    self.assertEqual([1, 2, 3], remove_sub_list([1, 2, 3], []))
    self.assertEqual([1, 2, 3], remove_sub_list([1, 2, 3], [4]))
    self.assertEqual([1, 3], remove_sub_list([1, 2, …
Run Code Online (Sandbox Code Playgroud)

python list-manipulation

45
推荐指数
7
解决办法
2163
查看次数

在Perl中,我如何获得多组笛卡尔积?

我想在Perl中进行排列.例如,我有三个数组:["big", "tiny", "small"]然后我有["red", "yellow", "green"],也有["apple", "pear", "banana"].

如何得到:

["big", "red", "apple"]
["big", "red", "pear"]

..etc..

["small", "green", "banana"]

我理解这叫做排列.但我不知道该怎么做.另外我不知道我可以拥有多少阵列.可能有三个或四个,所以我不想做嵌套循环.

perl cartesian-product list-manipulation cross-product

13
推荐指数
4
解决办法
3535
查看次数

对列表中的滑动窗口对进行Pythonic迭代?

在滑动对中迭代列表的Pythonic有效方法是什么?这是一个相关的例子:

>>> l
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> for x, y in itertools.izip(l, l[1::2]): print x, y
... 
a b
b d
c f
Run Code Online (Sandbox Code Playgroud)

这是成对迭代,但我们如何在滑动对上进行迭代?意味着迭代对:

a b
b c
c d
d e
etc.
Run Code Online (Sandbox Code Playgroud)

这是对的迭代,除了每次将1对元素滑动而不是2个元素.谢谢.

python iteration list list-manipulation python-itertools

9
推荐指数
2
解决办法
3115
查看次数

在OCaml中懒惰的"n选择k"

作为枚举集合的更大问题的一部分,我需要编写一个OCaml函数'choose',它接受一个列表并输出作为由该列表的元素组成的所有可能的大小为k的序列的列表(不重复序列,可以通过排列获得彼此).它们放在结束列表中的顺序无关紧要.

例如,

choose 2 [1;2;3;4] = [[1;2];[1;3];[1;4];[2;3];[2;4];[3;4]]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

我想让整个事情变得懒惰,输出一个懒惰的列表,但是如果你有一个严格的解决方案,那也将非常有用.

ocaml functional-programming lazy-evaluation list-manipulation

8
推荐指数
2
解决办法
2224
查看次数

是否有内置的python来创建多个列表中的元组?

是否有一个内置的python与一组列表的tupler相同,或类似的东西:

def tupler(arg1, *args):
    length = min([len(arg1)]+[len(x) for x in args])
    out = []
    for i in range(length):
        out.append(tuple([x[i] for x in [arg1]+args]))
    return out
Run Code Online (Sandbox Code Playgroud)

所以,例如:

tupler([1,2,3,4],[5,6,7])
Run Code Online (Sandbox Code Playgroud)

收益:

[(1,5),(2,6),(3,7)]
Run Code Online (Sandbox Code Playgroud)

或者也许有适当的pythony方式这样做,还是有类似的发电机???

python transpose built-in list-manipulation

7
推荐指数
2
解决办法
1194
查看次数

映射Scala中的子列表

我知道map函数接受列表的每个元素(一个序列)并将一个函数应用于它.递归(并且不考虑终止条件等)

map(s, f) = f(s.head) :: map(s.tail, f)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个像这样的功能

foo(s, f) = f(s) :: map(s.tail, f).
Run Code Online (Sandbox Code Playgroud)

所以'mapper'是在子列表而不是单个元素上调用映射函数的地方.在lisp术语中,我正在寻找一个地图列表,而不是mapcar.这样的事情是存在的,还是我必须自己滚动(或使用递归)?

或者,我将采用一个函数,将序列作为输入,并返回一系列中到端子序列,即

bar(s, f) = s :: bar(s.tail, f)
Run Code Online (Sandbox Code Playgroud)

functional-programming scala list-manipulation

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

Linq/.NET3.5是否支持'zip'方法?

在其他语言(ruby,python,...)我可以使用zip(list1, list2)这样的工作:

如果list1 is {1,2,3,4}list2 is {a,b,c}

然后zip(list1, list2)会回来:{(1,a), (2,b), (3,c), (d,null)}

这种方法在.NET的Linq扩展中是否可用?

.net linq list-manipulation

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

Ravi Sethi在Haskell的小被子语言

我正在尝试在Haskell中实现Ravi Sethi的Little Quilt语言.可以在这里看到Sethi的小被子的概述:http://poj.org/problem?id = 3201

这是我到目前为止的功能:

import Data.List.Split

rotate :: Int -> [a] -> [a]
rotate n xs = iterate rot xs !! n 
    where 
        rot xs = last xs : init xs 

turn :: [a] -> [a]
turn x = rotate 2 x

grid :: Int -> [String] -> String
grid n = unlines . map concat . chunksOf n

printAtom :: [String] -> IO() 
printAtom x = putStrLn $ grid 2 x  
Run Code Online (Sandbox Code Playgroud)

我实现rotate了在我的 …

haskell list-manipulation

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