可能重复:
在Python中展平(不规则)列表
我有一个列表,其中包含许多列表.这是一个例子,
[
[Obj, Obj, Obj, Obj],
[Obj],
[Obj],
[
[Obj,Obj],
[Obj,Obj,Obj]
]
]
Run Code Online (Sandbox Code Playgroud)
有没有办法将所有这些项目合并为一个列表,因此输出将是类似的
[Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj]
Run Code Online (Sandbox Code Playgroud) 特定
userplays = { "Alice" : { "AC/DC" : 2,
"The Raconteurs" : 3,
"Mogwai" : 1
},
"Bob" : { "The XX" : 4,
"Lady Gaga" : 3,
"Mogwai" : 1,
"The Raconteurs" : 1
},
"Charlie" : { "AC/DC" : 7,
"Lady Gaga" : 7
}
}
Run Code Online (Sandbox Code Playgroud)
获取所有乐队的列表:
['Lady Gaga', 'Mogwai', 'AC/DC', 'The Raconteurs', 'The XX']
Run Code Online (Sandbox Code Playgroud)
我可以
list(set(flatten([ [ band
for band
in playcounts.keys() ]
for playcounts
in userplays.values() ] ) ) )
Run Code Online (Sandbox Code Playgroud)
哪个flatten
来自Flatten(一个不规则的)列表列表,但有没有 …
我有一个Python列表.如下图所示,我想检查其中一个子列表是否包含一个项目.以下尝试失败.有没有人知道一个简单的方法 - 没有我写我自己的循环?
>>> a = [[1,2],[3,4],[5,6],7,8,9]
>>> 2 in a
Run Code Online (Sandbox Code Playgroud)
我希望,True
但回报是False
在python中,用另一个列表中的元素替换列表中的元素的最佳方法是什么?
例如,我有:
a = [ 1, 'replace_this', 4 ]
Run Code Online (Sandbox Code Playgroud)
我想替换replace_this
用[2, 3]
.更换后必须是:
a = [ 1, 2, 3, 4 ]
Run Code Online (Sandbox Code Playgroud)
更新
当然,切片可以做(对不起,我没有在问题中写出来),但问题是你可能replace_this
在列表中有多个值.在这种情况下,您需要在循环中进行替换,这将变得不理想.
我认为使用它会更好itertools.chain
,但我不确定.
这可能是不可能的,但如果是的话,我写的一些代码会很方便:
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)
这将有效,但它不像上面的代码那样可读.
这可能吗?
这是一个可以让我打印我的两个列表,cursosArreglo
和tareasArreglo
,但是当我打印出来就出来这样的:[['qwert'], ['fisica']]
埃斯塔ES LA LISTA德tareasŸSUS prioridades:
[['zxcvb'], ['4'], ['nbvcx'], ['3'], ['tregd'], ['2'], ['bvxx'], ['3']]
如何在没有括号的情况下打印两个列表?
def verTareas():
print("")
print("Saludos "+nombre+(" a continuacion puede ver su informacion"))
print("")
print("Esta es la lista de cursos asignados: ")
print str(cursosArreglo)
print("Esta es la lista de tareas y sus prioridades: ")
print '\n'+str(tareasArreglo)
print("")
regresar()
Run Code Online (Sandbox Code Playgroud) 我有这个字符串列表:
x = ['+27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
我想要一些代码输出:
['+', '27', '05', '1995', 'F']
Run Code Online (Sandbox Code Playgroud)
我正在考虑.split()
在最后一个元素上使用该函数,所以我编写了这段代码:
x=['+27', '05', '1995 F']
x[2]=x[2].split()
Run Code Online (Sandbox Code Playgroud)
这输出:
['+27', '05', ['1995', 'F']]
Run Code Online (Sandbox Code Playgroud)
如何确保第二个元素不是子列表,而是输出这个?
['+27', '05','1995','F']
Run Code Online (Sandbox Code Playgroud)
我应该使用insert
和del
?
我用第一个元素写了这个insert
和del
:
x=x.split("/")
x.insert(0,x[0][0])
x.insert(1,x[1][1:])
del x[2]
Run Code Online (Sandbox Code Playgroud)
这输出:
['+', '27', '05', '1995 F']
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我有一个这样的字典:
migration_dict = {'30005': ['key42750','key43119', 'key44103', ['key333'],
['key444'], ['keyxx']], '30003': ['key43220', 'key42244','key42230',
['keyzz'], ['kehh']]}
Run Code Online (Sandbox Code Playgroud)
我怎样才能压平每个键的值以便得到类似的东西:
migration_dict = {'30005': ['key42750','key43119', 'key44103', 'key333',
'key444', 'keyxx'], '30003': ['key43220', 'key42244','key42230',
'keyzz', 'kehh']}
Run Code Online (Sandbox Code Playgroud) 我正在使用Python中的生成器,我正在尝试使用简单的递归方案来实现flatten-function.也就是说,一个函数将一个列表作为输入,该列表可能包含子列表,并输出一个只能在输入的原子元素上迭代的可迭代对象.
所以,print(list(flatten([1,2,3,[4,5,6]])))
应该返回包含的内容[1,2,3,4,5,6]
.
我的尝试如下:
def flatten(toflatten):
try:
for element in toflatten:
flatten(element)
except TypeError:
yield toflatten
Run Code Online (Sandbox Code Playgroud)
因此,它应检查其参数是否是可迭代对象.如果是这种情况,也可以对此对象进行递归.否则,将其作为原子元素.
这不起作用,flatten([1,2,3,[4,5,6]])
只返回一个空列表.
为什么会这样?特别是; 为什么它甚至没有对此输入执行递归函数调用?(我使用的是Python 3.5)
这个问题不同于将列表/嵌套列表转换为不嵌套的列表(这会产生一组非常具体的响应,无法解决我的情况),也不同于许多“列表的扁平列表”答案。
我要列出一个列表,其中一些又是列表列表,然后“拉平”到列表列表(而不仅仅是列表!)。
作为一个具体的例子,我想从这里开始:
my_list_of_lists = [[1, 2, 3], [[9, 10], [8, 9, 10], [3, 4, 6]], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)
对此
target_list_of_lists = [[1, 2, 3], [9, 10], [8, 9, 10], [3, 4, 6], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)
(从视觉上讲,我想将外部列表中的所有[[
和]]
内部分别转换为[
和]
。)
python ×10
list ×7
python-2.7 ×2
dictionary ×1
elements ×1
flatten ×1
generator ×1
python-3.x ×1
recursion ×1
string ×1
subtraction ×1