Python:在最右边嵌套列表的末尾添加一个值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:在最右边嵌套列表的末尾添加一个值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1723字,纯文字阅读大概需要3分钟。
内容图文
![Python:在最右边嵌套列表的末尾添加一个值](/upload/InfoBanner/zyjiaocheng/801/c2406ed09d6248c1be963f3c55e54f83.jpg)
我正在尝试做的是,给定一个包含任意数量的其他嵌套列表的列表,递归地下降嵌套列表中的最后一个值,直到我达到最大深度,然后将值附加到该列表.一个例子可能会使这更清楚:
>>> nested_list1 = [1, 2, 3, [4, 5, 6]]
>>> last_inner_append(nested_list1, 7)
[1, 2, 3, [4, 5, 6, 7]]
>>> nested_list2 = [1, 2, [3, 4], 5, 6]
>>> last_inner_append(nested_list2, 7)
[1, 2, [3, 4], 5, 6, 7]
以下代码有效,但对我来说似乎过于棘手:
def add_to_inner_last(nested, item):
nest_levels = [nested]
try:
nest_levels.append(nested[-1])
except IndexError: # The empty list case
nested.append(item)
return
while type(nest_levels[-1]) == list:
try:
nest_levels.append(nest_levels[-1][-1])
except IndexError: # The empty inner list case
nest_levels[-1].append(item)
return
nest_levels[-2].append(item)
return
我喜欢的一些事情:
>它的工作原理
>它处理列表末尾的字符串大小写以及空列表的情况
我不喜欢的一些事情:
>我必须检查对象的类型,因为字符串也是可索引的
>索引系统感觉太神奇了 – 明天我将无法理解这一点
>使用附加到引用列表会影响所有引用的事实感觉过于聪明
我对它有一些一般性的问题:
>起初我担心附加到nest_levels是空间效率低下的,但后来我意识到这可能只是一个引用,并且没有创建新对象,对吧?
>此代码纯粹产生副作用(它总是返回None).我应该关注那个吗?
基本上,虽然这段代码有效(我认为……),但我想知道是否有更好的方法可以做到这一点.通过更好,我的意思是更清晰或更pythonic.可能具有更明确的递归的东西?我无法定义停止点或执行此操作而不会产生副作用.
编辑:
需要说明的是,此方法还需要处理:
>>> last_inner_append([1,[2,[3,[4]]]], 5)
[1,[2,[3,[4,5]]]]
和:
>>> last_inner_append([1,[2,[3,[4,[]]]]], 5)
[1,[2,[3,[4,[5]]]]]
解决方法:
这个怎么样:
def last_inner_append(x, y):
try:
if isinstance(x[-1], list):
last_inner_append(x[-1], y)
return x
except IndexError:
pass
x.append(y)
return x
内容总结
以上是互联网集市为您收集整理的Python:在最右边嵌套列表的末尾添加一个值全部内容,希望文章能够帮你解决Python:在最右边嵌套列表的末尾添加一个值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。