python如何将list中>0的元素打印出来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何将list中>0的元素打印出来相关的知识,希望对你有一定的参考价值。
参考技术A if all(item == 0 for item in list1):print("something")
如何在不弹出元素且不循环的情况下在 C++ 中打印整个堆栈?
【中文标题】如何在不弹出元素且不循环的情况下在 C++ 中打印整个堆栈?【英文标题】:How to print whole stack in C++ in without popping out elements and without loop? 【发布时间】:2021-11-06 22:51:32 【问题描述】:在 Java 中,我们可以像这样打印堆栈
Stack<Integer> s = new Stack<>();
System.out.print(s);
如何在 C++ 中做同样的事情,既不弹出元素又不循环?
【问题讨论】:
如果你说的是std::stack
,那就没办法了。您必须复制它,然后循环弹出要打印的元素
@SachinRajput 所以? Java 和 C++ 是两种截然不同的语言。
欢迎您在 C++ 中实现自己的 Stack
类并覆盖 <<
运算符,但 std::stack
不会。 C++ 不是 Java。
Java != C++。 Ether java 在幕后制作副本并做同样的事情,或者它的 print 函数知道并且可以访问堆栈的内部,因此它不需要弹出。您必须创建自己的堆栈并重载输出运算符才能执行相同操作
实现一个行为类似于std::stack
的类“可调试堆栈”是有意义的,除非由一个友好的“调试”类操作,它允许访问堆栈中的所有元素,而无需弹出它们。或者一个类“peekable stack”,它只允许堆栈操作来修改它,但在查看它而不修改它时允许更多操作。
【参考方案1】:
std::stack
没有任何公共函数可以让您对其进行迭代。但是std::stack
使用std::deque
作为它的数据结构:
它是一个protected
成员,因此您可以从std::stack
继承并访问其底层数据结构而无需复制它。而System.out.print(s);
最终使用循环遍历s
项目并打印它。你可以在 C++ 中通过重载operator<<(std::ostream&, T const&)
:
template<typename T>
struct my_stack final : std::stack<T>
auto begin() const
return std::stack<T>::c.cbegin();
auto end() const
return std::stack<T>::c.cend();
friend std::ostream& operator<<(std::ostream& out, my_stack const& in)
std::for_each(in.begin(), in.end(), [&out](auto const &i)
out << i << '\t';
);
return out;
;
int main()
my_stack<std::string> stack;
stack.push("1");
stack.push("2");
stack.push("3");
stack.push("4");
std::cout << stack << std::endl;
【讨论】:
nb:for(...)
是一个循环。因此,虽然它打印了整个堆栈,但它不符合问题中的“无循环”规范。不过,OP 接受了这一点,因此规范可能没有正确编写。
@L.ScottJohnson,你是对的,对不起。我已经编辑了我的答案。
@L.ScottJohnson 代码可以轻松地将for
循环替换为例如std::for_each()
或类似的算法来处理迭代。
@RemyLebeau,谢谢,我再次编辑了我的答案。我以为std::for_each
让代码看起来很复杂。以上是关于python如何将list中>0的元素打印出来的主要内容,如果未能解决你的问题,请参考以下文章