如何解决Python for循环与正则表达式的单行区别
我只是想出了一行和常规for循环之间的区别。
作为示例;
obs = [6,12,8,10,20 16]
freq = [5,4,3,2,1,5]
data = []
data.extend(obs[i:i+1] * freq[i] for i in range(len(obs)))
输出
[[6,6,6],[12,12],[8,8],[10,10],[20],[16,16,16]]
但是,
for i in range(len(obs)):
data.extend(obs[i:i+1] * freq[i])
输出
[6,20,16]
有人可以解释一下这是什么原因吗?
解决方法
extend
按y表示x表示将y的每个条目附加到x。
由于obs[i:i+1] * freq[i] for i in range(len(obs))
的条目是整数列表,所以data.extend(obs[i:i+1] * freq[i] for i in range(len(obs)))
会将整数列表追加到data
,而不是整数。
另一方面,obs[i:i+1] * freq[i]
的元素是整数,因此data.extend(obs[i:i+1] * freq[i])
会将整数附加到data
。
这将产生与单线相同的输出:
obs = [6,12,8,10,20,16]
freq = [5,4,3,2,1,5]
data = []
for i in range(len(obs)):
data.extend([obs[i:i+1] * freq[i]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。