Python怎么拉平python 字典嵌套列表表

用户名:想自由_
访问量:9643
注册日期:
阅读量:1297
阅读量:3317
阅读量:444467
阅读量:1130261
51CTO推荐博文
【head First python】之递归处理嵌套列表通常我们将数据储存在列表中,然后使用for循环去处理。(当然,在需要额外控制的情况下可以使用while)Demo:movies = ["托尼",1975,"杰克",91,"唐老鸭","机器猫"]
for i in movies:
print i上面的for可以很正常的处理列表,但是。如果列表是多维列表还能如上正常处理吗?Demo:movies = ["托尼",1975,"杰克",91,"唐老鸭",["机器猫","机器狗"]]
for i in movies:
print i经过测试,可以知道单纯的使用for无法正确的得到我们想要的结果,不过这并不是for循环的问题,而是我们并没有告诉for该如何处理找到的内列表,对于for循环来说,内列表只是外列表中的一个列表项而已,所以我们要让for知道内列表也要当做列表处理!!那么这里我们可以使用python内置函数isinstance(),这个函数可以检测特定的标识符是否包含某个特定类型的数据!Demo:&&& the_list = ['aa','bb']
&&& isinstance(the_list,list)
&&& a = 'b'
&&& isinstance(a,list)
False这个函数是不是很酷?检测为列表返回True否则为False那么,就让我们更新一下代码Demo:movies = ["托尼",1975,"杰克",91,"唐老鸭",["机器猫","机器狗"]]
for list_wai in movies:
if isinstance(list_wai,list):
#判断当前循环取值是否为列表
for list_nei in list_wai: #上面判断为列表则运行该for处理这个内列表
print(list_nei)
#打印处理好的内列表数据
print(list_wai)
#判断不为列表的项则直接打印出来上面的代码很好的处理了内列表的数据,但是如果内列表中还有一个内列表,甚至是N个内列表,上面这段代码可能就有点力不从心了!所以,现在该创建一个函数,使用递归!Demo:movies = ["托尼",1975,"杰克",91,"唐老鸭",["机器猫","机器狗",['我是内内列表',['我是内内内列表']]]]
def print_list(the_list): #定义一个名为print_list的函数,带有名为the_list的形参
for list_wai in the_list: #使用for处理这个形参
if isinstance(list_wai,list): #如果当前列表项为内列表则在下面继续调用这个函数!
print_list(list_wai)
print(list_wai)#如果列表项不为内列表,则直接打印这个列表项
print_list(movies)#运行这个函数,并带入通过形参带入列表当然,我们可以进一步将这个函数定义为一个模块,上传至PyPI上与这个世界上所有的python爱好者分享!小节:一:isinstance()内置函数会检查一个标识符是否制定某个指定类型的数据对象。二:使用def来创建自己的函数本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)1126人阅读
python(13)
有时候会用到嵌套的列表(list),比如[1, 2, [3, 4, [5, 6]], [&abc&, &def&]]
&如果将嵌套的列表拉平(flatten)呢?变成:[1, 2, 3, 4, 5, 6, &abc&, &def&]
方法有很多,目前了解到的各方面都比较好,也很pythonic的方法是:def flatten(l):
for el in l:
if hasattr(el, &__iter__&) and not isinstance(el, basestring):
for sub in flatten(el):
l = [1, 2, [3, 4, [5, 6]], [&abc&, &def&]]
l2 = [x for x in flatten(l)]
#[1, 2, 3, 4, 5, 6, &abc&, &def&]
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:65706次
积分:1821
积分:1821
排名:千里之外
原创:121篇
评论:14条
目前该博客已经迁移到中,此博客不再维护啦.希望大家多去踩踩呀.
文章:13篇
阅读:8368
文章:56篇
阅读:17510
(2)(5)(12)(20)(34)(16)(19)(13)(2)用户名:hiubuntu
文章数:116
评论数:24
访问量:95713
注册日期:
阅读量:1297
阅读量:3317
阅读量:444467
阅读量:1130261
51CTO推荐博文
好久没写博文了,添加一个练习题,选自《head_first_python》~~python列表:以中括号开始和结束"[]";列表项以逗号","分隔开,使用赋值操作符"="赋予一个标识符。如:movies=["the holy",1975,"terry jones",91,["graham",["michael","john","gilliam","idle","haha"]]]注释:1、无需声明标识符"movies"的数据类型;& & & 2、列表列表是一个高层集合,列表项的类型并不重要,可以是字符串也可以是数字甚至是列表。打印列表:1、直接打印:&&&print&movies[0]
&&&the&holy
&&&print&movies[1]
&&&1975注释:列表的项读取和数组一样,从第0个开始2、循环打印while 循环和for循环count=0
while&count&&&len(movies):
&&print&movies[count]
&&count=count+1&&&for&i&in&movies:
...&&print&i
terry&jones
['graham',&['michael',&'john',&'gilliam',&'idle',&'haha']]注释:这时候出现一个问题,列表中嵌套的列表,在读取的时候作为一个列表项直接打印,而不是我们想要的打印成一列3、嵌套循环打印&&def&print_list(object):
&&&&for&i&in&object:
&&&&&&if&isinstance(i,list):
&&&&&&&&print_list(i)
&&&&&&else:
&&&&&&&&print&i
&&&print_list(movies)
terry&jones
haha注释:采用isinstance判断对象类型,函数递归循环打印。本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)Python多层嵌套list的递归处理方法(推荐)
投稿:jingxian
字体:[ ] 类型:转载 时间:
下面小编就为大家带来一篇Python多层嵌套list的递归处理方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
问题:用Python处理一个多层嵌套list
['and', 'B', ['not', 'A'],[1,2,1,[2,1],[1,1,[2,2,1]]], ['not', 'A', 'A'],['or', 'A', 'B' ,'A'] , 'B']
需求1)如何展开成一层?
需求2)如何删除重复的元素? 包括重复的list, 要考虑子list的重复元素删除后造成的子list重复
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def unilist(ll):
功能:用递归方法删除多层列表中重复元素
result = []
for i in ll:
if isinstance(i, list):
if unilist(i) not in result:
result.append(unilist(i))
if i not in result:
result.append(i)
return result
def flatten(ll):
功能:用递归方法展开多层列表,以生成器方式输出
if isinstance(ll, list):
for i in ll:
for element in flatten(i):
yield element
testcase= ['and', 'B', ['not', 'A'],[1,2,1,[2,1],[1,1,[2,2,1]]], ['not', 'A', 'A'],['or', 'A', 'B' ,'A'] , 'B']
print unilist(testcase)
print list(flatten(testcase))
['and', 'B', ['not', 'A'], [1, 2, [2, 1], [1, [2, 1]]], ['or', 'A', 'B']]
['and', 'B', 'not', 'A', 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 'not', 'A', 'A', 'or', 'A', 'B', 'A', 'B']
以上这篇Python多层嵌套list的递归处理方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Python 基础教程
Python 循环嵌套
Python 语言允许在一个循环体里面嵌入另一个循环。
Python for 循环嵌套语法:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
Python while 循环嵌套语法:
while expression:
while expression:
statement(s)
statement(s)
你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环,
反之,你可以在for循环中嵌入while循环。
以下实例使用了嵌套循环输出2~100之间的素数:
while(i & 100):
while(j &= (i/j)):
if not(i%j): break
if (j & i/j) : print i, & 是素数&
print &Good bye!&
以上实例输出结果:
4个月前 (04-21)
反馈内容(*必填)
截图标记颜色
联系方式(邮箱)
联系邮箱:
投稿页面:
记住登录状态
重复输入密码}

我要回帖

更多关于 android 列表嵌套列表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信