比较Python中的两个列表

时间:2015-08-17 12:20:41

标签: python

所以我有一项任务,这是要求,

对于这个程序,我们将生成更多有关列表的统计信息。该程序将使用一个用户输入的列表,另一个是一组单词。程序将计算输入列表中每个单词集中存在的单词的次数,并显示这些结果。

需要注意的其他一些事情是我不能使用其他数据结构,例如Python的字典。

以下是我到目前为止的草稿,

public class AIssue extends Activity {
String result = " DATA";

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.some);
    findViewById(R.id.button1).setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                            .permitAll().build();
                    StrictMode.setThreadPolicy(policy);

                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                            AIssue.this);
                    alertDialogBuilder.setCancelable(false);
                    alertDialogBuilder.setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    GetDataJSON g = new GetDataJSON();
                                    g.execute();

                                }
                            });
                    alertDialogBuilder.create().show();
                }
            });
}

// Getting the users
private class GetDataJSON extends AsyncTask<Void, Void, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Log.e("IN", "ONPRE EXECUTE");
    }

    @Override
    protected String doInBackground(Void... params) {
        String result = "SOME DATA";
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(1000);
                Log.e("IN", "DO IN BACKGROUND");
            } catch (InterruptedException e) {
                e.printStackTrace();
                result = "ERROR";
            }

        }
        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        Log.e("IN", "ON POST EXECUTE");
        Log.e("IN", "" + result);
        /*****
         * Your Condition to Check The Friend should be here after
         * showList2();
         * ***/
        if (result.equalsIgnoreCase("SOME DATA"))// replace it with your
                                                    // condition to check
                                                    // friends
        {
            Log.e("IN", "IF");
        } else {
            Log.e("IN", "ELSE");
        }
    }
}
}

我还是相当陌生的Python,(大约几个星期的练习),我有点难过。我知道它与第三个功能有关,但我似乎无法使它工作。任何帮助将不胜感激。

另外,这是我在Stackoverflow上提出的第一个问题,因此任何其他提出问题礼仪的建议也将受到赞赏。

感谢。

2 个答案:

答案 0 :(得分:1)

我希望我能正确理解你(计算输入列表中每个单词集中存在的单词的次数),但这可能会有所帮助:

# Two lists to compare:    
list1 = ['Words', 'in', 'list', 'one']
list2 = ['Words', 'in', 'list', 'two']

# Make a new list of all the common elements and take the length:
print len([i for i in list1 if i in list2])

>>> 3

对不起,如果我误解了。如果你想要一个速记方式,那么列表推导是有用的。 以下可能是您想要的:

list1 = ['Words', 'list', 'oh', 'one']
list2 = ['Words', 'list', 'list', 'two']

print [list2.count(i) for i in list1]

>>> [1, 2, 0, 0]

了解这里发生什么的简单方法;首先是list1中项目的for i in list1个循环。然后list2.count(i)计算list2中每个项目的出现次数。 [ ]表示返回一个新列表,因此以列表格式[1, 2, 0, 0]

输出

答案 1 :(得分:0)

您的错误似乎来自对return关键字的作用的误解!

return将值传递回函数的调用者,退出函数。也就是说,一旦你调用return,函数的其余部分就不会运行了!

尝试修复您的代码,并告诉我您是否遇到更多麻烦:)