我有这个正在运行的数组:
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.victorvicari.actionbarteste, PID: 2714
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at android.view.ViewConfiguration.get(ViewConfiguration.java:364)
at android.view.View.<init>(View.java:3788)
at android.view.View.<init>(View.java:3892)
at android.view.ViewGroup.<init>(ViewGroup.java:573)
at android.widget.AdapterView.<init>(AdapterView.java:246)
at android.widget.AbsSpinner.<init>(AbsSpinner.java:70)
at android.widget.Spinner.<init>(Spinner.java:232)
at android.widget.Spinner.<init>(Spinner.java:199)
at android.widget.Spinner.<init>(Spinner.java:154)
at android.widget.Spinner.<init>(Spinner.java:139)
at android.widget.Spinner.<init>(Spinner.java:112)
at com.example.victorvicari.actionbarteste.Fragments.Fase2Fragment.addSpinner(Fase2Fragment.java:81)
at com.example.victorvicari.actionbarteste.MainActivity$1.onClick(MainActivity.java:70)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
然而,当我尝试这个时,它不是。
urls = [
'a.com/%s' % page for page in xrange(1,4,1)
]
错误消息是NameError:名称'page'未定义
如何以速记方式生成这样的数组?
urls = [
'a.com/%s' % page for page in xrange(1,4,1),
'b.com/%s' % page for page in xrange(1,4,1)
]
有人建议此帖子与此帖重复:How to append list to second list (concatenate lists)但是,我不同意。
尽管解决方案是相同的,但问题的目的是不同的。以防万一,有其他用户想知道如何在数组中使用多个xrange,那么这个问题的答案,或者其他问题可能是他们最好的答案。
答案 0 :(得分:2)
只连接两个列表。
urls = ['a.com/%s' % page for page in xrange(1,4,1)]+['b.com/%s' % page for page in xrange(1,4,1)]
答案 1 :(得分:2)
您可以使用生成器(实际列表推导)语句,如下所示:
urls = ['{0}.com/{1}'.format(site, page) for site in ['a', 'b'] for page in xrange(1,4,1)]
这导致一个列表:
['a.com/1', 'a.com/2', 'a.com/3', 'b.com/1', 'b.com/2', 'b.com/3']
答案 2 :(得分:0)
你基本上需要嵌套循环。在理解中它看起来像
Object.defineProperty(doc, 'GridOrder', {configurable: true})
答案 3 :(得分:0)
如果要生成具有相同模式但长度更长的列表,可以这样做:
import string
urls = ['%s.com/%s' % (string.ascii_lowercase[i], page + 1) for i in xrange(10) for page in xrange(10)]