参考: python分解 列表在Python 中展平浅层列表
虽然上面提到的解决方案很有帮助,但我的问题略有不同,我想知道是否有一种pythonic方法来解决它.
a = [['a-3','b-3'],'r',['j']]
Run Code Online (Sandbox Code Playgroud)
我想要的是一种让'a'等于以下的简洁方法:
a = ['a-3','b-3','r','j']
Run Code Online (Sandbox Code Playgroud)
我被困在使用python 2.4所以2.4兼容的pythonic解决方案会很棒,但我仍然会发现2.7个以上的例子也很有趣.
主要的问题是,有非迭代的元件,否则该总和(LST,[])工作得很好,因为确实为2.7+链方法
我在python中有一个数组数组.在python中将它转换为数组的最佳方法是什么?例如:
m = [[1,2],[3,4]]
# convert to [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我是python的新手,所以我不知道它的任何解决方案比编写循环更好.请帮忙.
我搜索并发现具有相同标题的问题也是(这里 这里 这里 这里 这里),但我不是在问那个。我遇到了这个问题:
编写一个函数来展平一个列表。该列表包含其他列表、字符串或整数。
而我的代码是
t=[]
def flatten(aList):
for i in aList:
if type(i) !=list:
t.append(i)
else:
flatten(i)
return t
Run Code Online (Sandbox Code Playgroud)
但是当我检查测试用例的代码时:
flatten([[1], [1]]):检查器告诉我输出是[1, 1, 1, 1]但在 codeskulptor 中我得到正确的输出是[1, 1] . flatten([[[1]], [[[5]]]]):检查器告诉输出是[1, 1, 1, 1, 1, 2, 3, 3, 2, 1, 0, 4, 5, 6, 7, 1, 5]但在 codeskulptor 中告诉[1, 5]。 许多测试用例都存在这个问题。然后我在 python 导师中检查了我的代码,发现在每次t返回列表时执行 if 语句之后,最后当函数停止时它返回最后编辑的列表t。
我该如何解决这个问题,请帮我解决这个问题,是的,我是 Python 新手,对 itertools、lambda 函数用法、生成器等一无所知,所以请在我能理解的上下文中告诉我。
编辑:我的问题是,原本"有没有一个标准名称,以展名单列表的功能,但只有一层深?",但查克的回答是措辞更接近我其实是想问问,所以我给它改名.不过,这三个答案对我都很有用.谢谢.
"扁平化"似乎是这需要一棵树,但是建立原子组成的列表深它们嵌套,但对于只有一个级别之后停止功能的功能广为接受的名字吗?所以((1 2)((3 4)(5 6))(7 8))"somethings"到(1 2(3 4)(5 6)7 8)."某些东西"在多种语言/库中是否有共同的名称?
这个问题的答案:
建议'链'可能是一个很好的猜测,但它是否足以成为"标准"?
假设你有一个列表:
mylist=[[1,2,3,4],[2,3,4,5],[3,4,5,6]]
Run Code Online (Sandbox Code Playgroud)
任何 pythonic(2.x) 解压内部列表的方法,以便新列表看起来像?:
mylist_n=[1,2,3,4,2,3,4,5,3,4,5,6]
Run Code Online (Sandbox Code Playgroud) 这看起来很简单,但我还没有找到一种方法来做到这一点。我有三个列表,a、b 和 c。我想遍历所有这些,就好像它们的元素完全形成一个大列表一样。我可以想到几种方法来做到这一点,但没有什么是非常流畅或“pythonic”的。我希望 splat 操作员能够工作:
for e in (*a, *b, *c):
# do stuff with e
Run Code Online (Sandbox Code Playgroud)
但这会导致语法错误。有任何想法吗?
我想改变
mylist = [['1'],['2'],['3']]
Run Code Online (Sandbox Code Playgroud)
成为
mynewlist = (1,2,3)
Run Code Online (Sandbox Code Playgroud)
如何在python中做到这一点?
我试图用python编写脚本.我需要避免重复相同的任务,并希望写入一个.
catlist1 = ['s0.05-k5-a1.0' , 's0.05-k5-a3.0' , 's0.05-k5-a7.0' , 's0.05-k5-a10.0' ]
catlist2 = ['s0.05-k7-a1.0' , 's0.05-k7-a3.0' , 's0.05-k7-a7.0' , 's0.05-k7-a10.0']
catlist3 = ['s0.07-k5-a1.0' , 's0.07-k5-a3.0' , 's0.07-k5-a7.0' , 's0.07-k5-a10.0' ]
catlist4 = ['s0.07-k7-a1.0' , 's0.07-k7-a3.0' , 's0.07-k7-a7.0' , 's0.07-k7-a10.0']
catlist = [catlist1 ,catlist2 ,catlist3 ,catlist4 ]
Run Code Online (Sandbox Code Playgroud)
我需要调用for循环中的每个列表.我在这个单循环中调用所有列表.我可以通过在catlist1中再次写入多次并在catlist2中再次写入来重复进行.我怎么能解决这个问题.谢谢
for parName in catlist:
category = '/home/x/Desktop/rouge/ROUGE/Experiments/'
for root, subFolders, files in os.walk(category + parName):
#i = 0
(head, filename) = os.path.split(root)
print filename
#some function that is will re
Run Code Online (Sandbox Code Playgroud)