def flattenList(toFlatten):
final=[]
for el in toFlatten:
if isinstance(el, list):
final.extend(flattenList(el))
else:
final.append(el)
return final
Run Code Online (Sandbox Code Playgroud)
当我不知道列表的嵌套程度时,这是我能想到的唯一方法.
我有一个这样的列表:
[[(video1,4)], [(video2,5),(video3,8)], [(video1,5)], [(video5, 7), (video6,9)]...]
Run Code Online (Sandbox Code Playgroud)
此列表中的每个项目可能包含单个数据对或元组,我想将此列表更改为
[(video1,4),(video2,5),(video3,8),(video1,5),(video5,7),(video6,9)...]
Run Code Online (Sandbox Code Playgroud)
然后这样做:
for item in list:
reqs = reqs + item[1]
b.append(item[0])
c = set(b)
Run Code Online (Sandbox Code Playgroud)
我不知道如何更改列表结构,或者如何根据原始列表进行相同的计算?
我有一个对象列表,其中对象可以是列表或标量.我想要一个只有标量的扁平列表.例如:
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中展平浅层列表
我想在列表中转换多个列表?我正在使用循环,但每个子列表项之间没有逗号.
myList = [['a','b','c','d'],['a','b','c','d']]
myString = ''
for x in myList:
myString += ",".join(x)
print myString
Run Code Online (Sandbox Code Playgroud)
输出继电器:
a,b,c,da,b,c,d
Run Code Online (Sandbox Code Playgroud)
期望的输出:
a,b,c,d,a,b,c,d
Run Code Online (Sandbox Code Playgroud) 我想要一个文件字典:
files = [files for (subdir, dirs, files) in os.walk(rootdir)]
Run Code Online (Sandbox Code Playgroud)
但我知道,
files = [['filename1', 'filename2']]
Run Code Online (Sandbox Code Playgroud)
当我想要的时候
files = ['filename1', 'filename2']
Run Code Online (Sandbox Code Playgroud)
如何防止循环通过该元组?谢谢!
我有一个像这样的元组列表:mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)].如果我使用列表理解slist = [item for sublist in mylist for item in sublist],我可以得到slist = [1,2,3,6,1,1,7,8,1,3,4,5].
如果我只需要slist像这样的独特元素,我应该如何修改[1,2,3,6,7,8,4,5]?
这可能是不可能的,但如果是的话,我写的一些代码会很方便:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox', ListOne, 'lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我最终会将ListOne作为ListTwo中的一个列表.
但相反,我想将ListOne扩展为ListTwo,但我不想做以下事情:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox']
ListTwo.extend(ListOne)
ListTwo.extend(['lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
这将有效,但它不像上面的代码那样可读.
这可能吗?
我有这样的python代码:
newlist =[[52, None, None], [129, None, None], [56, None, None], [111, None, None],
[22, None, None], [33, None, None], [28, None, None], [52, None, None],
[52, None, None], [52, None, None], [129, None, None], [56, None, None],
[111, None, None], [22, None, None], [33, None, None], [28, None, None]]
Run Code Online (Sandbox Code Playgroud)
我想要的newlist是:
newlist =[52, None, None,129, None, None,56, None, None,111, None, None,22,
None, None,33, None, None,28, None, None,52, None, None,52, None,
None,52, None, None,129, None, None,56, None, None, 111, …Run Code Online (Sandbox Code Playgroud) 我试图计算列表列表中的元素总和.如果主列表中的列表都具有相同的大小,我可以毫不费力地计算总和,如下所示:
a = [[4], [8], [15]]
total = [sum(i) for i in zip(*a)]
Run Code Online (Sandbox Code Playgroud)
结果:
total = [27] #(4 + 8 + 15) = 27, GOOD!!!
Run Code Online (Sandbox Code Playgroud)
但是我可能在主列表中有一个不同大小的列表,例如:
a = [[3], [4, 6], [10]]
Run Code Online (Sandbox Code Playgroud)
预期结果:
total = [17, 19] #(3 + 4 + 10) = 17, (3 + 6 + 10) = 19
Run Code Online (Sandbox Code Playgroud)
我被困在这里,显然我的相同大小的列表的解决方案不起作用.以我定义的方式获得结果的最佳方法是什么?我的直觉是找出具有最大长度的列表,然后通过添加零将其他列表扩展到该长度,最后分别计算总和.这听起来像一个丑陋的解决方案,我想知道是否有一个快速,更优雅的方式来做到这一点.
谢谢!
编辑:应该更好地解释它.我也有点困惑......以下是更好的例子:
列表中列表中的元素数量a永远不会超过2个.示例:
a = [[1], [10], [5]] #Expected result: [16] (1+10+5)
a = [[1, 10], [3], [4]] #Expected result: [8, 17] (1+3+4, 10+3+4)
a = …Run Code Online (Sandbox Code Playgroud) 我怎么能改变[('a', 1), ('c', 3), ('b', 2)],['a',1,'c',3,'b',2]反之亦然?谢谢