Pythonの範囲()の解釈と可視化

オリジナルリンク: https://blog.soshace.com/en/python/python-range-explained-and-visualized/

例ではPythonと視覚範囲()関数を用いて説明

我々は深さの様々なPython関数、モジュールとライブラリの内部の仕組みを勉強していきます。列挙()を学んだ後、私たちは今、別の重要な機能の--rangeを調べます()。

この記事では、我々は、範囲()関数とそのユースケーススタディのハイライトを見ていきます - あなたは、その強力な側面と限界を理解し、効果的にPythonの()内の範囲を使用する方法を学習します。関連の問題は、多くの場合)(範囲の技術的なインタビューに表示されます - あなたは、私たちのインタビューPythonの問題を確認しましたか?

(いつものように、Pythonの3からこの商品コード)

そして、最終的にはPythonでの範囲は、()何をするのですか?

範囲()Pythonはそれをあらかじめパッケージであることを意味する、組み込み関数です。この関数は、(目標範囲と呼ばれる)の数値の配列を作成し、それを返します。もちろん、あなたは、様々な目的のためにこれらの番号を設定することができます示すように、範囲は()実際には良好なサイクルで使用することができます。

以下は、()モジュールが提供する、より専門的な解釈Pythonのヘルプです:

I、I + 1、I + 2、...、Jを生成した「整数のシーケンスによって生成された番号は(含まれていない).range(i、j)をステップ停止するスタート(包括的)からオブジェクト、オブジェクトの数を返します。 -1。番号を開始するデフォルトは0、番号がストップを省略されている!範囲は(4)を生成0,1,2,3これら4は、リストの有効なインデックス要素である。指定するステップを与えられたとき、番号を増分(または減分)。

範囲内のPython()構文

私たちは、最も単純なシナリオを想定してみましょう:範囲は(5)
シーケンスを生成します......
レンジ()関数の構文は非常に簡単です-私たちは、機能および入力パラメータを呼び出します。
ここに画像を挿入説明

各パラメータの役割を詳しく見てみましょう。

  1. 開始は、開始点列を定義するオプションのパラメータです。指定しない場合、デフォルトは0です。

  2. 停止配列は、パラメータは、エンドポイントを定義して必要とされます。

  3. step是一个可选参数,它定义了步长大小(即序列中各个整数之间被忽略的整数数量)。如果未指定,则默认为0。

在Python中组合range()和List()
使用の範囲とリスト
假设参数为5时,我们可能想要展示序列中实际使用了哪些数字。要做到这一点,我们可以使用另一个Python内置函数——list——来创建一个由函数调用range(5)将产生的数字组成的列表:
ここに画像を挿入説明
这将输出:
ここに画像を挿入説明
在Python中将Range()与for循环组合
流通と利用の範囲
或者,我们可以使用一个for循环——它允许我们多次执行给定的命令。这个过程称为迭代,我们可以使用各种数据结构(如字符串或列表)来指定“重复”的确切数量。当然,我们也可以使用range()函数来实现这个目的——它基本上会运行该命令N次。
ここに画像を挿入説明
由于Python清晰的语法,我们很容易记住for循环是如何工作的:“对于某个东西中的每个元素/部分/项,这样做。”然而,它的输出将是垂直的(每个print调用将以一个新行结束)——一些开发人员可能会发现它不方便或可读性不强。要水平打印输出,我们可以在print函数中添加end参数:
ここに画像を挿入説明
这样,结果会更容易阅读:
ここに画像を挿入説明
关于range()的“Stop”参数的说明(在Python中也称为包含范围)

现在,我们需要重申索引在几乎所有编程语言中的工作方式。因为我们没有指定start参数,它默认被指定为0,我们的序列就变成了0 - 5。你可能会想,如果我们把这个序列放入一个列表并打印出来,这个列表应该是这样的:
ここに画像を挿入説明
但是,最后一个索引(即stop参数)不包含在此操作中,因此将其公式记为range(从数字X到——但是不包括——数字Z )是很有用的。

当我们想使用所有的三个参数时,我们可以来查看一个更复杂的情形:
ここに画像を挿入説明
range的使用过程和停止位置

前面小节(range(5))中的代码实际上接收了3个参数,尽管我们只输入了一个参数。

在Python中创建一个反转的range()对象

到目前为止,我们只使用了正整数来构建遵循正常(即升序)顺序的range对象——但是如果我们想要以相反的顺序(即降序)使用range()呢?为了实现这个想法,我们需要将第三个range()参数——stop——设置为负数。让我们想象一下,现在是12月31日,离新年只有10秒了,一个倒数计时器可以帮助我们倒数这10秒,就像它的名称所表明的:
ここに画像を挿入説明
这将输出:
ここに画像を挿入説明
注意:要连接(比如组合两段数据)整数和省略号(‘…’符号),我们必须对它们调用str()函数,以便将整数转换为字符串——在我们的例子中是str(i)。否则,我们会遇到一个TypeError:
ここに画像を挿入説明
Python中的range() : 应用列表操作

由于range()会返回一个列表,因此,我们可以对它应用各种列表操作,包括切片;而xrange()则不提供此功能。
ここに画像を挿入説明
这将输出:
ここに画像を挿入説明
Python中的range() 与 xrange(): 有什么不同?
レンジと... X-範囲の使用を使用しますか?
Python 3带来了许多改进,但是其中一些变化背后的原因不是很清楚。一个很好的例子是从xrange() (Python2)到range() (Python3)的过渡,新的语言特性通常比它们的前辈要好,但是xrange()在某些方面仍然占上风。让我们来看看它们比较的结果如何:

Python中的range() 与 xrange(): 这些函数返回什么

虽然它们具有相同的功能,但它们返回值是其主要的区别。

  • range()返回一个列表。

  • xrange()返回一个xrange对象。

その出力は同じですが、彼らは差の値が考慮すべき重要な側面である返却が - それは、これらの機能の実装に影響を与え、彼らがどのように使用されています。

範囲内のPython()とはxrange():これらの関数の速度を実装する方法

我々は技術のAとBを比較すると、パフォーマンスが最も重要な要因であると言えます。もちろん、小さなデータセットを扱う際に、レンジ()とはxrange()の速度は非常に高速ですが、それは速度差が明らかになっている大きな数字に来るとき。一つの可能​​な説明は、())(範囲にはxrangeからパフォーマンスをされて切り替えている - が、パフォーマンスは実際にそれを改善しましたか?

Pythonモジュールは小さなコードセグメントの性能試験のためにはtimeit最適を内蔵します。:の範囲()とはxrange()(私たちは、コマンドラインからではなく、Pythonインタプリタからこれらのコマンドを実行していることに注意)を比較するためにそれを使用してみましょう
ここに画像を挿入説明
これらの指標は、コンピュータによって異なる場合がありますが、しかし、程度の平均速度差を!はxrange()が生成するオブジェクトを返すため、この100%が可能である-だけそれにより時間と資源を節約する、ユーザの処理に必要な数値範囲を可能にします。(楽しいファクト:このプロセスは、「遅延評価」と呼ばれています)。

範囲内のPython()とはxrange():これらの関数は、どのくらいのメモリを使用しています

そして、SYSは、ビルトインのPythonと呼ばれる別のモジュールに似てはtimeitはどのくらいのメモリこれらの二つの機能を確認するために私たちを助けることができます。この目的のために、我々は、SYSモジュールgetsizeof()関数を使用します
ここに画像を挿入説明
。この意志出力:
翻訳者注:二行目は範囲であるべきです()
結論

Pythonモジュールの数は、時には便利なライブラリや関数は非常に見えるかもしれません。しかし、今、あなたは)(別の偉大な--range機能をマスターしたこと、そしてそれは常にあなたのプログラミングセッションの忠実なパートナーになります。

英文原文:https://blog.soshace.com/en/python/python-range-explained-and-visualized/ 
译者:野生大熊猫

おすすめ

転載: blog.csdn.net/qdPython/article/details/102642845