与for循环一起使用的字符串join()方法

时间:2018-05-19 03:40:44

标签: python join int

我需要你的帮助,因为我不明白为什么可以使用if(Build.VERSION.SDK_INT >= 23) { try { CameraManager camManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); // Usually front camera is at 0 position. if (camManager != null) { mCameraId = camManager.getCameraIdList()[0]; camManager.setTorchMode(mCameraId, true); theFlash.setImageResource(R.drawable.ic_highlight_black_24dp); } } catch (CameraAccessException e) { } } else { try { mCamera = Camera.open(); Camera.Parameters parameters = mCamera.getParameters(); List<String> flashModes = parameters.getSupportedFlashModes(); if (flashModes != null && flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) { parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); mCamera.setParameters(parameters); mCamera.startPreview(); theFlash.setImageResource(R.drawable.ic_highlight_black_24dp); } } catch (Exception e) { } } 方法作为参数使用join()方法。

例如:

for

Python文档:

  

" ".join(str(x) for x in list)   返回一个字符串,它是iterable中字符串的串联。

     

如果iterable中有任何非字符串值,包括bytes对象,则会引发str.join(iterable)。元素之间的分隔符是提供此方法的字符串。

可以请有人解释一下吗?

1 个答案:

答案 0 :(得分:3)

声明(str(x) for x in list)称为generator expression

>>> (str(x) for x in [1,2,3])
<generator object <genexpr> at 0x7fc916f01d20>

这样做是创建一个可以迭代一次的对象,并产生一次创建一个元素。您可以像列表一样迭代它,如下所示:

>>> gen = (str(x) for x in [1,2,3])
>>> for s in gen:
...     print s
... 
1
2
3

生成器表达式是可迭代的,因此join函数所做的是迭代它并加入它的值。