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 类并覆盖 &lt;&lt; 运算符,但 std::stack 不会。 C++ 不是 Java。 Java != C++。 Ether java 在幕后制作副本并做同样的事情,或者它的 print 函数知道并且可以访问堆栈的内部,因此它不需要弹出。您必须创建自己的堆栈并重载输出运算符才能执行相同操作 实现一个行为类似于std::stack 的类“可调试堆栈”是有意义的,除非由一个友好的“调试”类操作,它允许访问堆栈中的所有元素,而无需弹出它们。或者一个类“peekable stack”,它只允许堆栈操作来修改它,但在查看它而不修改它时允许更多操作。 【参考方案1】:

std::stack 没有任何公共函数可以让您对其进行迭代。但是std::stack 使用std::deque 作为它的数据结构:

海合会: https://code.woboq.org/gcc/libstdc++-v3/include/bits/stl_stack.h.html#98 MSVC: https://github.com/microsoft/STL/blob/main/stl/inc/stack#L21 叮当: https://github.com/llvm/llvm-project/blob/main/libcxx/include/stack#L101

它是一个protected 成员,因此您可以从std::stack 继承并访问其底层数据结构而无需复制它。而System.out.print(s); 最终使用循环遍历s 项目并打印它。你可以在 C++ 中通过重载operator&lt;&lt;(std::ostream&amp;, T const&amp;)

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的元素打印出来的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中打印出 List 的所有元素?

如何在Java中打印出List的所有元素?

Python按照索引访问list

Java 如何打印出List中得值

python 怎么判断list里元素类型

如何打印迭代器类型 list<pair<int,int>>::iterator it 指向的元素