input: ['abc', 'cab', 'cafe', 'face', 'goo']
output: [['abc', 'cab'], ['cafe', 'face'], ['goo']]
Run Code Online (Sandbox Code Playgroud)
问题很简单:它由字谜组成.订单无关紧要.
当然,我可以通过C++(这是我的母语)来做到这一点.但是,我想知道这可以通过Python在一行中完成.编辑:如果不可能,可能是2或3行.我是Python的新手.
为了检查两个字符串是否是字谜,我使用了排序.
>>> input = ['abc', 'cab', 'cafe', 'face', 'goo']
>>> input2 = [''.join(sorted(x)) for x in input]
>>> input2
['abc', 'abc', 'acef', 'acef', 'goo']
Run Code Online (Sandbox Code Playgroud)
我认为通过组合等可能是可行的map.但是,我需要使用a dict作为哈希表.我还不知道这是否可以在一行中完成.任何提示都会被贬低!
我没有任何问题想出如何在itertools中应用函数直到我到达 groupby(iterable, key=None),我立即阅读了这个例子并且它没有完全点击我,这导致我在谷歌上研究它.我最终找到了一个例子 ;然而,它并没有真正将它分解为有意义的地方.根据我的理解,groupby()子迭代一个有序的迭代?
我的问题:任何人都可以提供更新的Python 3,解释groupby()"Barney-Style"的功能吗?
与许多已经回答过的关于此主题的问题相比,我有一个更基本的“运行长度编码”问题。本质上,我正在尝试获取字符串
string = 'aabccccaaa'
Run Code Online (Sandbox Code Playgroud)
并返回
a2b1c4a3
Run Code Online (Sandbox Code Playgroud)
我以为,如果我能够设法将所有信息放入一个列表,如下所示,我将很容易能够返回a2b1c4a3
test = [['a','a'], ['b'], ['c','c','c','c'], ['a','a','a']]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我想出了以下代码,但是想知道是否有人可以帮助我弄清楚如何使其创建上面显示的输出。
def string_compression():
for i in xrange(len(string)):
prev_item, current_item = string[i-1], string[i]
print prev_item, current_item
if prev_item == current_item:
<HELP>
Run Code Online (Sandbox Code Playgroud)
如果有人对解决这样一个问题的更有效方法有任何其他意见,我非常高兴!
是否有一个简单的方法/模块在python中进行分组操作,数据集太大而无法放入内存中?
我通常会使用pandas,但它会因大型数据集而崩溃.
我有一个这样的列表:
List1: [1, 5, 9, 1, 5, 9, 15, 21, 29, 1, 5, 9, 15]
Run Code Online (Sandbox Code Playgroud)
我想要一个新的列表,它应该包含最高的数字,然后再用1开始.
List_new: [9, 29, 15]
Run Code Online (Sandbox Code Playgroud)
我试过这个:
List_new = []
for i in range(len(List1)):
j = List1[i]
if j + 1 == '1':
List_new += [j]
else:
continue
print(j)
Run Code Online (Sandbox Code Playgroud)
但我得到了一个空列表.
我想以这样的方式比较两个Python列表,'A'和'B',我可以找到A中与B中相同数字对应的所有元素.我想为B中的每个数字执行此操作.例如,如果
A = [5, 7, 9, 12, 8, 16, 25]
B = [2, 1, 3, 2, 3, 1, 4]
Run Code Online (Sandbox Code Playgroud)
我想得到
[7,16] corresponding to the number 1 of listB
[5, 12] corresponding to the number 2 of listB
[9, 8] corresponding to the number 3 of listB
[25] corresponding to the number 4 of listB
Run Code Online (Sandbox Code Playgroud)
A和B将始终具有相同的长度.
我想在列表中找到具有相同属性的任何元素对.例如,
class X:
def __init__(self, param):
self.param = param
my_list = [X(1), X(2), X(3), X(2), X(3), X(3)]
Run Code Online (Sandbox Code Playgroud)
因此,如果比较x.param,我会寻找my_list[1], my_list[3]或my_list[2], my_list[4]或my_list[2], my_list[5]或my_list[4], my_list[5].但是,不能保证列表必须具有相同属性的任何元素,例如
my_list = [X(1), X(2), X(3)]
Run Code Online (Sandbox Code Playgroud)
也可能是此函数的有效参数.
显而易见的方法似乎是:
def find_dupe(my_list, my_lambda):
attrs = dict()
for item in my_list:
if my_lambda(item) in attrs:
return [attrs[my_lambda(item)], item]
attrs[my_lambda(item)] = item
return []
Run Code Online (Sandbox Code Playgroud)
但它似乎有点不优雅,我想知道是否有更好的方法来做到这一点.
假设我有以下列表:
a = [True, True, True, False, False, False, False, True, True]
Run Code Online (Sandbox Code Playgroud)
怎样才能让他们最好只要么返回分组0,3,7或分组像下面这样?
[True, True, True]
[False, False, False, False]
[True, True]
Run Code Online (Sandbox Code Playgroud)
背景:我试图在我的 NumPy 数组中找到平台,虽然将导数设置为零是一个好的开始,但我仍然需要将数组排序为块。我认为这基本上归结为上述问题。
我查找了 NumPy 和 itertools(试图从问题NumPy grouping using itertools.groupby performance 中获得解决方案)但我没有成功。我想人们可能会使用itertools.takewhile和 filtfalse的组合(请参阅此处的文档),但我对此并不了解。或者也许我只是想得太复杂了。
我最近不得不调试一些类似这样的代码:
for key, group in itertools.groupby(csvGrid, lambda x: x[0]):
value1 = sum(row[1] for row in group)
value2 = sum(row[2] for row in group)
results.append([key, value1, value2])
Run Code Online (Sandbox Code Playgroud)
在每个结果集中,value2作为0. 当我查看它时,我发现代码第一次迭代时group,它消耗了它,因此第二次迭代时有零个元素。
直觉上,我希望group是一个可以无限次迭代的列表,但它的行为就像一个只能迭代一次的迭代器。这种情况有什么好的理由吗?
我有这样的数组,
a = [3,2,5,7,4,5,6,3,8,4,5,7,8,9,5,7,8,4,9,7,6]
Run Code Online (Sandbox Code Playgroud)
我想制作小于7的值列表(如下所示)
b = [[3,2,5],[4,5,6,3],[4,5],[5],[4],[6]]
Run Code Online (Sandbox Code Playgroud)
所以我使用了以下方法,
>>> from itertools import takewhile
>>> a = [3,2,5,7,4,5,6,3,8,4,5,7,8,9,5,7,8,4,9,7,6]
>>>list(takewhile(lambda x: x < 7 , a))
[3, 2, 5]
Run Code Online (Sandbox Code Playgroud)
但我只得到第一个序列.任何人都可以帮我解决这个问题吗?谢谢.
python ×10
list ×4
anagram ×1
attributes ×1
dictionary ×1
encoding ×1
numpy ×1
oop ×1
pandas ×1
python-2.7 ×1