【问题标题】:user input for removing multiple elements in a list用于删除列表中多个元素的用户输入
【发布时间】:2014-08-31 16:21:39
【问题描述】:

我已经阅读和重新阅读列表推导和循环,我猜这些不是我想的那样。

我试图通过将垃圾变成列表、排序、删除用户定义的垃圾来查找一堆垃圾中的信息。用户输入一个字符,所有匹配的字符都应该被删除。重复。

但是它只删除一个匹配的字符,而不是全部。我相信问题在于我调用函数重新开始的方式,但我猜函数(以及为此调用的类)不像我认为的那样工作

这是我下班后得到的最接近的:(我对此完全不熟悉,所以请放轻松。谢谢。

junk = """
(+*]_}%+(%[{)]({#[+$&&[^@{&#!@%)!+&}$@+@[+&_*!$(+#*%!+$@{{^**{)(]*$(}+
!$%}$$}+@^$$%{}{#!(%[]$!*}+(]!%{(^{&^{$[$)]&&^+{+%!#[([%^!{]]#^@!{#(&]@_$*_&!%(!
+_+}%@#{_}^#*)%*(*}*![}[%_[[^@$&%)([*{_${)$^^_!+}{)!)@_[*$_}*}$#[+}{]*+!^])}&{+#
+!@!^*@}!}&{]*#^@}_[)}#@%!_*#!$}!)[(${+^&!{[&&&*[{}+*+(#+_[}{$$)#([*!)%@^%_]#%$$
(++^+&)}*_&%@#[^^+^&@_%]+$%$#$*)@!(]*+@]}%$$}$(#$&^(%[*([&]*^&}(!#{&_}^(*{(+$#}}
(&_+][&_@)$&$&^[_$(++$^}]&^^*(+*!&#_$]*+@!]+{%^_*+!&}@$!#^{+_#([+@(((*+)[()__}(^
@)](+[$*_(]*$[[&@^(_*#(*&!^{+]_%)_)^[}@]#]%#@+^+[%{_*{!)}#$@#)_$!_(!*+#}%%}+$&$[
%&]!{{%*_!*}&)}$**_{*!#%[[#]!](^^$![#[[*}%(_#^^!%))!_^@)@**@}}(%%{#*%@(((]^%^![&
}!)$]&($)@](+(#{$)_%^%_^^#][{*[)%}+[##(##^{$}^]#&(&*{)%)&][&{]&#]}[[^^&[!#}${@_(
#@}&$[[%]_&$+)$!%{(}$^$}*
"""

junklist = list(junk)


def find():
    junklist.sort()
    print junklist
    x = str(raw_input("what do you want to remove from the list?> "))
    return x

def deleteChars(x):
    while len(junklist) > 0:
        if x in junklist:
            junklist.remove(x)
            find()
        else:
            print "not in junklist"
            find()  

x =find()

【问题讨论】:

    标签: list loops python-2.7


    【解决方案1】:

    我修改了程序以删除所有出现的输入字符。现在只需修改它以使其递归到您的愿望。如果您需要更多帮助,请告诉我。

        junk = """
    (+*]_}%+(%[{)]({#[+$&&[^@{&#!@%)!+&}$@+@[+&_*!$(+#*%!+$@{{^**{)(]*$(}+
    !$%}$$}+@^$$%{}{#!(%[]$!*}+(]!%{(^{&^{$[$)]&&^+{+%!#[([%^!{]]#^@!{#(&]@_$*_&!%(!
    +_+}%@#{_}^#*)%*(*}*![}[%_[[^@$&%)([*{_${)$^^_!+}{)!)@_[*$_}*}$#[+}{]*+!^])}&{+#
    +!@!^*@}!}&{]*#^@}_[)}#@%!_*#!$}!)[(${+^&!{[&&&*[{}+*+(#+_[}{$$)#([*!)%@^%_]#%$$
    (++^+&)}*_&%@#[^^+^&@_%]+$%$#$*)@!(]*+@]}%$$}$(#$&^(%[*([&]*^&}(!#{&_}^(*{(+$#}}
    (&_+][&_@)$&$&^[_$(++$^}]&^^*(+*!&#_$]*+@!]+{%^_*+!&}@$!#^{+_#([+@(((*+)[()__}(^
    @)](+[$*_(]*$[[&@^(_*#(*&!^{+]_%)_)^[}@]#]%#@+^+[%{_*{!)}#$@#)_$!_(!*+#}%%}+$&$[
    %&]!{{%*_!*}&)}$**_{*!#%[[#]!](^^$![#[[*}%(_#^^!%))!_^@)@**@}}(%%{#*%@(((]^%^![&
    }!)$]&($)@](+(#{$)_%^%_^^#][{*[)%}+[##(##^{$}^]#&(&*{)%)&][&{]&#]}[[^^&[!#}${@_(
    #@}&$[[%]_&$+)$!%{(}$^$}*
    """
    
    junklist = list(junk)
    
    
    def find():
        junklist.sort()
        print junklist
        x = str(raw_input("what do you want to remove from the list?> "))
        deleteChars(x)
        return x
    
    
    
    def deleteChars(x):
        if x in junklist:
          a = [y for y in junklist if y != x]
          print a
        else:
          print 'not in junklist'
    
    
    x=find()
    

    【讨论】:

    • 我不知道在哪里放置我的 while 循环来进行递归。最终发生的事情是我继续经历相同的循环,因此我们在创建 list(a) 时从垃圾列表中删除的字符又回来了……我想这是一个全新的问题?感谢您迄今为止的帮助。
    【解决方案2】:

    将您的 if 更改为 for 语句。 对于垃圾列表中的 y: 然后只需检查 x==y。如果是,请删除。

    【讨论】:

    • 嗯我也不能让它工作。你有我可以学习的例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2023-04-10
    • 2010-10-04
    • 2019-12-31
    • 2021-01-12
    • 2020-09-28
    • 2015-06-16
    相关资源
    最近更新 更多