gpt4 book ai didi

python - isinstance(x, list) 在迭代包含字符串和列表的列表时

转载 作者:太空狗 更新时间:2023-10-30 00:56:45 25 4
gpt4 key购买 nike

Iterating nested list inside-out ,有人告诉我“类型检查不是 Pythonic”。一般来说,这是真的:我们只想查看接口(interface)(duck-typing)而不是特定类型。

问题问的是 ['a', ['c', ['e'], 'd'], 'b'] 形式的嵌套列表,我们特别考虑字符串原子的(不可迭代的)。所以,我们不能使用一揽子 collections.Iterable,但另一方面 isinstance(x, list) 确实看起来有点 hacky。

我的回答是

def traverse(l):
for x in l:
if isinstance(x, list):
traverse(x)
callback(l)

什么是更好的方法?或者 isinstance 可以吗?

最佳答案

我认为你的答案在这里是可以的——尽管我可能会把它改成

if not isinstance(x,basestring):
...

根据预期的输入使其更容易接受。最终,一些问题你需要 isinstance 这就是它仍然存在于语言中的原因。

话虽如此,这个问题的非 Pythonic 之处在于数据结构。在 python 中,如果一个问题看起来真的很难,那可能意味着你以错误的方式存储数据......(当然,我意识到你无法控制其他问题的数据结构的原始发布者是什么; -).

基本上,我想我的观点是 isinstancehack,当您的同事/某个地方的某个图书馆作者给您柠檬水时,您需要制作柠檬水 -- 否则尽可能避免它。

关于python - isinstance(x, list) 在迭代包含字符串和列表的列表时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com