如果我有序列序列(可能是元组列表),我可以使用itertools.chain()来展平它.但有时我觉得我宁愿把它写成一种理解.我只是想不出怎么做.这是一个非常具体的案例:
假设我想在序列中交换每对元素.我在这里使用字符串作为序列:
>>> from itertools import chain
>>> seq = '012345'
>>> swapped_pairs = zip(seq[1::2], seq[::2])
>>> swapped_pairs
[('1', '0'), ('3', '2'), ('5', '4')]
>>> "".join(chain(*swapped_pairs))
'103254'
Run Code Online (Sandbox Code Playgroud)
我在序列的偶数和奇数切片上使用zip来交换对.但我最终得到了一个现在需要扁平化的元组列表.所以我使用chain().有没有办法可以用理解来表达它?
如果你想发布你自己的解决方案来解决交换对的元素的基本问题,请继续,我会投票给任何教我新东西的东西.但是,即使答案是"不,你做不到",我也只会接受一个针对我的问题的答案.
我有一个对象列表,其中对象可以是列表或标量.我想要一个只有标量的扁平列表.例如:
L = [35,53,[525,6743],64,63,[743,754,757]]
outputList = [35,53,525,6743,64,63,743,754,757]
Run Code Online (Sandbox Code Playgroud)
PS此问题的答案不适用于异构列表.在Python中展平浅层列表
这可能是一个非常直截了当的问题,但我无法在其他地方找到答案,所以我会问.查找元素在嵌套列表中出现的次数的最佳方法是什么?例如:
my_list=[[a,b,c,d],[a,b,z,d],[a,c,f,e],[d,w,f,a]]
Run Code Online (Sandbox Code Playgroud)
我如何找到'a'是列表中第一个元素的次数?或者更一般地说,my_list中出现多少次'a'?我想有一种方法可以用collections.Counter做到这一点,但是我还没弄清楚.
编辑
对于my_list,我想要一个输出,a:3当计数它是否是列表的第一个元素.如果问题被改变以查看是否b是第二个元素,那么期望的输出将是b:2
我终于开始使用 Python 进行递归,并尝试计算list. 但是,我在计算嵌套list数字中的出现次数时遇到了问题。
例如
def count(lst, target):
if lst == []:
return 0
if lst[0] == target:
return 1 + count(lst[1:], target)
else:
return 0 + count(lst[1:], target)
Run Code Online (Sandbox Code Playgroud)
输出
>>> count( [1,2,3,[4,5,5],[[5,2,1],4,5],[3]], 1 )
Output: 1
Expected output: 2
有没有一种简单的方法可以在Python中展平嵌套列表?或者我可以用一种简单的方法来解释我的代码中存在嵌套列表的事实?
python ×4
flatten ×2
list ×2
counter ×1
nested-lists ×1
python-3.x ×1
recursion ×1
sequences ×1