对于我正在编写的某些代码,我需要从1到20跳过6进行迭代。
a = range(1,6)
b = range(7,31)
for i in a+b:
print i
有没有办法更有效地做到这一点?
在python
2中,您没有合并“范围函数”;这些只是列表。您的示例效果很好。但是range总是在内存中创建一个完整列表,因此,如果仅在for循环中需要,一种更好的方法是使用生成器表达式和xrange:
range_with_holes = (j for j in xrange(1, 31) if j != 6)
for i in range_with_holes:
....
在生成器表达式中,if部分可以包含要跳过数字的复杂逻辑。
组合可迭代对象的另一种方法是使用itertools.chain
:
range_with_holes = itertools.chain(xrange(1, 6), xrange(7, 31))
或者只是跳过不需要的索引
for i in range(1, 31):
if i == 6:
continue
...
问题内容: 如果我写 然后给出0、1、2、3、4,这 是否意味着Python同时向i分配了0、1、2、3、4? 但是,如果我写了: 然后我叫a,它只给出5, 但是如果我加上“ print a”,它得到1、2、3、4、5。 所以我的问题是,这有什么区别? 是字符串还是列表还是其他? 也许有人可以帮助我进行梳理: 如果运行此类代码,则仅当l = 5时才能得到答案。 如何使它们开始循环? 即l = 0获
range函数是个神奇而有趣的内置函数,你可以使用它来遍历数组,切片和字典。 当用于遍历数组和切片的时候,range函数返回索引和元素; 当用于遍历字典的时候,range函数返回字典的键和值。 package main import "fmt" func main() { // 这里我们使用range来计算一个切片的所有元素和 // 这种方法对数组也适用 nums := [
Python3 内置函数 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。 Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。 Python2 range() 函数返回的是列表。 函数语法 range(stop) range(start, stop[, s
问题内容: 我有一个带有4列的(example-)数据框: 我现在想将B,C和D列合并/合并到新的E列,如本例所示: 我在这里发现了一个非常类似的问题,但这在A列的末尾添加了合并的列B,C和D: 感谢帮助。 问题答案: 选项1 使用和 选项2 使用分配和 选项3 最近,我喜欢第3个选项。 使用
我想在YAML中合并数组,并通过ruby加载它们- 我希望组合数组为 我收到错误:在分析块映射时找不到预期的键 我如何在YAML中合并数组?
问题内容: 例如,从这两个对象开始: 我想这(覆盖除了属性或性质他不具备): 问题答案: 复制 深拷贝 扩展 : 浅拷贝 合并 : 自角度1.4+ 深(递归)复制 如果您不想用null覆盖,则可以使用this。 Object.assign() : FOT Angular 2+(ECMAScript 6) 资料来源: https://docs.angularjs.org/api/ng/functio