Site Loader

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Python — Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠ³ Π²Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

ОглавлСниС

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ – это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π²ΠΎ врСмя ΠΈΡ… выполнСния, ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ списков, ΠΎΠ½ΠΈ Π»Π΅Π½ΠΈΠ²Ρ‹ ΠΈ поэтому Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ элСмСнт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ запросу. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСтся, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ выраТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ рассматриваСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡ… использования.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yield вмСсто return, указывая ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, Ρ‡Ρ‚ΠΎ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€:

def countdown(num):
    print('Starting')
    while num > 0:
        yield num
        num -= 1

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ yield приостанавливаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ сохраняСт локальноС состояниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ остановлСно.

Π§Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ?

>>> def countdown(num):
...     print('Starting')
...     while num > 0:
...         yield num
...         num -= 1
...
>>> val = countdown(5)
>>> val
<generator object countdown at 0x10213aee8>

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ выполняСт Π΅Π΅. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ строка Starting Π½Π΅ пСчатаСтся. ВмСсто этого функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ next():

>>> next(val)
Starting
5

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ next() Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ начинаСтся с Π½Π°Ρ‡Π°Π»Π° Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ продолТаСтся Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° yield, Π³Π΄Π΅ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ справа ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹

next() ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ΡΡ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° yield Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ с Π½Π°Ρ‡Π°Π»Π° Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄. Если yield Π½Π΅ вызываСтся (Ρ‡Ρ‚ΠΎ Π² нашСм случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ условиС while Π½Π΅ отрабатываСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ num <= 0), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ StopIteration:

>>> next(val)
4
>>> next(val)
3
>>> next(val)
2
>>> next(val)
1
>>> next(val)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

ВыраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Generator Expressions)

Как ΠΈ списки, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π° Π½Π΅ список:

>>> my_list = ['a', 'b', 'c', 'd']
>>> gen_obj = (x for x in my_list)
>>> for val in gen_obj:
...     print(val)
...
a
b
c
d

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΏΠΎ ΠΎΠ±Π΅ΠΈΠΌ сторонам Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, ΠΏΠΎ большСй части, Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это Π»Π΅Π½ΠΈΠ²ΠΎ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запроса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°):

>>> import sys
>>> g = (i * 2 for i in range(10000) if i % 3 == 0 or i % 5 == 0)
>>> print(sys.getsizeof(g))
72
>>> l = [i * 2 for i in range(10000) if i % 3 == 0 or i % 5 == 0]
>>> print(sys.getsizeof(l))
38216

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ синтаксис Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка с Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° –

[] vs () – ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ выраТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка (ΠΏΡ€ΠΈ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти):

>>> import cProfile
>>> cProfile.run('sum((i * 2 for i in range(10000000) if i % 3 == 0 or i % 5 == 0))')
         4666672 function calls in 3.531 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
  4666668    2.936    0.000    2.936    0.000 <string>:1(<genexpr>)
        1    0.001    0.001    3.529    3.529 <string>:1(<module>)
        1    0.002    0.002    3.531    3.531 {built-in method exec}
        1    0.592    0.592    3.528    3.528 {built-in method sum}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}


>>> cProfile.run('sum([i * 2 for i in range(10000000) if i % 3 == 0 or i % 5 == 0])')
         5 function calls in 3.054 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    2.725    2.725    2.725    2.725 <string>:1(<listcomp>)
        1    0.078    0.078    3.054    3.054 <string>:1(<module>)
        1    0.000    0.000    3.054    3.054 {built-in method exec}
        1    0.251    0.251    0.251    0.251 {built-in method sum}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

Π­Ρ‚ΠΎ особСнно Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ выраТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π‘Π»ΡƒΡ‡Π°ΠΈ примСнСния

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ идСально подходят для чтСния большого количСства Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ Π·Π° Ρ€Π°Π·, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π±ΠΎΠ»Π΅Π΅ чистому ΠΊΠΎΠ΄Ρƒ ΠΏΡƒΡ‚Π΅ΠΌ раздСлСния процСсса ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

def emit_lines(pattern=None):
    lines = []
    for dir_path, dir_names, file_names in os.walk('test/'):
        for file_name in file_names:
            if file_name.endswith('.py'):
                for line in open(os.path.join(dir_path, file_name)):
                    if pattern in line:
                        lines.append(line)
    return lines

Π­Ρ‚Π° функция просматриваСт Π½Π°Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Она ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°Ρ‚Π΅ΠΌ просматриваСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ соотвСтствиС ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

Π­Ρ‚ΠΎ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с нСбольшим количСством Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². Но Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΎΡ‡Π΅Π½ΡŒ большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ? А Ρ‡Ρ‚ΠΎ, Ссли ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎ? К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, функция Python open() достаточно эффСктивна ΠΈ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ вСсь Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Но Ρ‡Ρ‚ΠΎ, Ссли наш список совпадСний Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π° нашСй машинС?

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вмСсто ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ мСста (ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списках) ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΏΠΎΡ‡Ρ‚ΠΈ бСсконСчный объСм ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…) ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для использования, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π° Ρ€Π°Π· (вмСсто созданиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… списков).

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ попытаСмся ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ подходят для Ρ‚Π°ΠΊΠΈΡ… случаСв использования с использованиСм ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠœΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ вСсь наш процСсс Π½Π° Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  • ГСнСрация мноТСства ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²
  • ГСнСрация всСх строк ΠΈΠ· всСх Ρ„Π°ΠΉΠ»ΠΎΠ²
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π½Π° основС сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ
def generate_filenames():
    """
    generates a sequence of opened files
    matching a specific extension
    """
    for dir_path, dir_names, file_names in os.walk('test/'):
        for file_name in file_names:
            if file_name.endswith('.py'):
                yield open(os.path.join(dir_path, file_name))

def cat_files(files):
    """
    takes in an iterable of filenames
    """
    for fname in files:
        for line in fname:
            yield line

def grep_files(lines, pattern=None):
    """
    takes in an iterable of lines
    """
    for line in lines:
        if pattern in line:
            yield line


py_files = generate_filenames()
py_file = cat_files(py_files)
lines = grep_files(py_file, 'python')
for line in lines:
    print (line)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для формирования списка строк, вмСсто этого ΠΌΡ‹ создаСм ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π°Π΅Ρ‚ свои ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· процСсс ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π·Π° Ρ€Π°Π·.

grep_files ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ всСх строк Ρ„Π°ΠΉΠ»ΠΎΠ² *.py. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ cat_file вставляСт Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° всС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ вСсь ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ склСиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ для рСкурсивного парсинга Π²Π΅Π±-страниц:

import requests
import re


def get_pages(link):
    links_to_visit = []
    links_to_visit.append(link)
    while links_to_visit:
        current_link = links_to_visit.pop(0)
        page = requests.get(current_link)
        for url in re.findall('<a href="([^"]+)">', str(page.content)):
            if url[0] == '/':
                url = current_link + url[1:]
            pattern = re.compile('https?')
            if pattern.match(url):
                links_to_visit.append(url)
        yield current_link


webpage = get_pages('http://sample.com')
for result in webpage:
    print(result)

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ просто Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ страницС Π·Π° Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСм ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ дСйствиС Π½Π° страницС. Как Π±Ρ‹ это выглядСло Π±Π΅Π· Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°? Π›ΠΈΠ±ΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ высокосвязанному ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ), Π»ΠΈΠ±ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ссылки ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΉ страницы.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, дСлая наши прилоТСния Π±ΠΎΠ»Π΅Π΅ эффСктивными Π² использовании памяти ΠΈ идСально подходящими для бСсконСчных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ чистому, Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ большС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Generator Tricks for Systems Programmers ΠΈ Iterator Chains as Pythonic Data Processing Pipelines.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ: Β Real PythonΒ  Introduction to Python Generators

Π‘Ρ‹Π»Π° Π»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π° эта ΡΡ‚Π°Ρ‚ΡŒΡ?

[5 / 4]

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ | ОписаниС, настройка, характСристики

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° частоты? Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ± этом ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² нашСй ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π½Π° ΠΌΠΎΠ΅ΠΌ столС появился этот Ρ‡ΡƒΠ΄ΠΎ-ΠΏΡ€ΠΈΠ±ΠΎΡ€. Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈ удобства использования ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ.

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±ΠΎ всСм ΠΏΠΎ порядку, Ρ‡Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя эта бСлая ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡ΠΊΠ° с ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΈ с нСбольшим Ρ‚Π°Π±Π»ΠΎ? Написано Π½Π° Π½Π΅ΠΉ β€œFunction Generator”, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с Π°Π½Π³Π». β€œΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ функций”.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? Π­Ρ‚ΠΎ ΠΏΠΎ сути источник пСриодичСских сигналов ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ частоту, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΠΌ Π·Π°Π΄Π°Π΄ΠΈΡ‚Π΅ (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°).

Π—Π½Π°Π΅Ρ‚Π΅ сколько тысяч баксов стоит Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°Ρ€ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ±ΠΎΡ€Ρ‡ΠΈΠΊ?)) ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ слишком Π³Ρ€ΠΎΠΌΠΊΠΎΠ΅ для нашСго гСроя. На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ ΠΎΠ½ прСдставляСт ΠΈΠ· сСбя просто ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ частоты. Ну Ρ€Π°Π· ΡƒΠΆ написано Π½Π° Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡƒΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚.

Π’ΠΈΠ΄Ρ‹ сигналов

Для простых ΠΎΠ±Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠΆΠ°Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°Π½ΠΈΡ„ΠΎΠ»ΡŒ, Ρ‚ΠΈΠΏΠ° мСня ΠΈ вас, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π° +100500 баксов Π±ΡƒΠ΄Π΅Ρ‚ нСцСлСсообразным ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ для нас Π±Ρ‹Π²Π°Π΅Ρ‚ достаточно Ρ‚Ρ€Π΅Ρ… Π²ΠΈΠ΄ΠΎΠ² сигналов:

это ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ

Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ

ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ сигнал

Π˜Ρ… Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ достаточно Π½Π° всС случаи ΠΆΠΈΠ·Π½ΠΈ. Π’ Π½Π°Ρ€ΠΎΠ΄Π΅ ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ синус, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ наш Π³Π΅Ρ€ΠΎΠΉ.

Как Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сигналы

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ сигнала, ΠΌΡ‹ ΠΊΡ€ΡƒΡ‚ΠΈΠΌ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΡƒ β€œAMPLITUDE”. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ΄ этим словом понимаСтся двойная Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ β€œΡ€Π°Π·ΠΌΠ°Ρ… сигнала” ΠΈΠ»ΠΈ β€œΠ°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π° ΠΎΡ‚ ΠΏΠΈΠΊΠ° Π΄ΠΎ пика”.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ сигнал Ρ€Π°Π·ΠΌΠ°Ρ…ΠΎΠΌ Π² 10 Π’ ΠΈ частотой Π² 2 ΠœΠ“Ρ†. Для наблюдСния сигнала Π½Π°ΠΌ понадобится осциллограф. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ мСня Π΅ΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ осциллограф OWON SDS6062, поэтому я Π±ΡƒΠ΄Ρƒ Π΄Π΅Π»Π°Ρ‚ΡŒ скрины с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π³ΠΎ:

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅:

Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π° осциллографС:

ΡΠΈΠ½ΡƒΡΠΎΠΈΠ°Π΄Π»ΡŒΠ½Ρ‹ΠΉ сигнал Π½Π° осциллографС

ΠΠΈΡˆΡ‚ΡΠΊ)

МСняСм Ρ„ΠΎΡ€ΠΌΡƒ сигнала Π½Π° ΠΏΠΈΠ»Ρƒ:

Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ сигнал

ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΈΠ»Π°.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ сигнал:

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠžΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ πŸ˜‰

ОписаниС Ρ€Π°Π·ΡŠΠ΅ΠΌΠΎΠ² ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ

На ΠΏΠ°Π½Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ±ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π·Π°Π²Π΅Ρ‚Π½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сигналов:

Π‘Π»Π΅Π²Π° Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Под внСшним счСтчиком здСсь имССтся Π²Π²ΠΈΠ΄Ρƒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ пСриодичСский сигнал с ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° частоты Π»ΠΈΠ±ΠΎ схСмы. Подавая Ρ‚Π°ΠΊΠΎΠΉ сигнал Π½Π° Ρ€Π°Π·ΡŠΠ΅ΠΌ нашСго Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ частоту нСизвСстного сигнала Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 10 ΠœΠ΅Π³Π°Π³Π΅Ρ€Ρ†. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ выполняСт Ρ€ΠΎΠ»ΡŒ частотомСра.

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Π½Π° Π»ΠΈΡ†Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Ρ‚Ρ€ΠΈ Ρ€Π°Π·ΡŠΠ΅ΠΌΠ°, ΠΊΡ€ΠΎΠΌΠ΅Β  Ρ€Π°Π·ΡŠΠ΅ΠΌΠ° для счСта ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²:

VCF – Voltage Controlled Frequency. По Π½Π°ΡˆΠ΅ΠΌΡƒ ГУН. Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ УправляСмый НапряТСниСм. Π‘Π°ΠΌΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ частоту сигнала с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, подавая Π½Π° этот Ρ€Π°Π·ΡŠΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ напряТСниС. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ напряТСниС ΠΌΡ‹ ΠΏΠΎΠ΄Π°Π΅ΠΌ, такая ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ частота πŸ˜‰ НапримСр, подавая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ напряТСниС Π½Π° Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π·ΡŠΠ΅ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΒ  сигнал с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ частотой.

TTL OUT.Β  Π’Π’Π› – Вранзисторно-Вранзисторная-Π›ΠΎΠ³ΠΈΠΊΠ°. OUT – Π²Ρ‹Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для тактирования логичСских микросхСм, построСнных Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ транзисторно-транзисторной Π»ΠΎΠ³ΠΈΠΊΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ это логичСскиС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² своСм составС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ биполярныС транзисторы ΠΈ рСзисторы. Π’Π°ΠΊΠΈΠ΅ микросхСмы Π΄Π΅Π»Π°ΡŽΡ‚ Π² основном Π½Π° ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ +5 Π’.

ЛогичСский ноль – это ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния ΠΎΡ‚ 0 ΠΈ Π΄ΠΎ +0,5 Π’. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логичСской Π΅Π΄ΠΈΠ½ΠΈΡ‡ΠΊΠΈ ΠΎΡ‚ 2,4 ΠΈ Π΄ΠΎ +5 Π’. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, с этого Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ пСриодичСский сигнал с Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈΡΡ нулями ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ: 0101010101… Частоту Ρ‚Π°ΠΊΠΎΠ³ΠΎ сигнала выставляСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Ρ‹Π±ΠΎΡ€Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

OUTPUT. Π’Ρ‹Ρ…ΠΎΠ΄ с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ИмСнно с этого Ρ€Π°Π·ΡŠΠ΅ΠΌΠ° ΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°ΠΌ сигнал с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’Π°ΠΊΠΆΠ΅ нСбольшой интСрСс ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя эти Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ:

Написано β€œattention”, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ β€œΠ²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅β€. На самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ написано β€œattenuator”. ΠΡ‚Ρ‚Π΅Π½ΡŽΠ°Ρ‚ΠΎΡ€ – слово Π½Π΅ нашС, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊ β€œΠΎΡΠ»Π°Π±ΠΈΡ‚ΡŒ, ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒβ€. Π’ΠΈΠ΄Π°Ρ‚ΡŒ, ΠΊΠΈΡ‚Π°ΠΉΡ†Ρ‹ сэкономили Π½Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ΅ с китайского Π½Π° английский, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈ β€œΠΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π°β€ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Ρ‚ΠΎΠΆΠ΅ написана с косяками ))

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ -20dB ΠΈ -40dB? dB – это Π΄Π΅Ρ†ΠΈΠ±Π΅Π»Ρ‹ (ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π°Π΄ΠΎ Π½Π°ΠΊΠ°Ρ€ΡΠ±Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π½ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡŽ). А ΠΏΠΎΠΊΠ° Π²ΠΎΡ‚ Π²Π°ΠΌ ссылочка Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. Π― Π·Π° вас ΡƒΠΆΠ΅ всС посчитал. -20dB это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ»Π°Π±ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ сигнал Π² 10 Ρ€Π°Π·. -40dB – Π² 100 Ρ€Π°Π·. А Ссли Π½Π°ΠΆΠΌΠ΅ΠΌ сразу Π½Π° 2 ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ Ρƒ нас Π² суммС получится -60dB. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ»Π°Π±ΠΈΡ‚ΡŒ сигнал Π² 1000 Ρ€Π°Π·.

ΠŸΠΎΠ²Ρ‹ΡˆΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠ° -10dB, которая ослабляСт сигнал Π² 3 Ρ€Π°Π·Π° с ΠΊΠΎΠΏΠ΅ΠΉΠΊΠ°ΠΌΠΈ.

И ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Ρƒ нас Π½Π° Ρ€Π°Π·Π±ΠΎΡ€Π΅ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π° ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΎΠΊ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ

ΠšΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΡƒ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ.

R/P – Rump/Pulse – Π£ΠΊΠ»ΠΎΠ½/Π˜ΠΌΠΏΡƒΠ»ΡŒΡ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΡƒΡ‚ΠΎΠΊ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ с Ρ„ΠΎΡ€ΠΌΠΎΠΉ сигнала, задавая ΡƒΠΊΠ»ΠΎΠ½. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ осциллограммы синусоиды ΠΈ ΠΏΠΈΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ:

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€ΡƒΡ‚Π½ΡƒΠ» Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ:

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€ΡƒΡ‚Π°Π½ΡƒΠ» Ρ‡ΡƒΡ‚ΠΎΠΊ:

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π£ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ сигнала с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², Ρ‚Π΅ΠΌ самым мСняя ΡΠΊΠ²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ сигнала, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ коэффициСнт заполнСния.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€Π°ΠΉΠ½Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠ΅.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠšΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠ° DC LEVEL. Direct Current Level. Π’ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с Π°Π½Π³Π». ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ постоянного Ρ‚ΠΎΠΊΠ°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² сигнал ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ постоянноС напряТСниС ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ говорится, β€œΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сигнал Π½Π°Π΄ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ моря”. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π·Π΅ΠΌΠ»ΠΈ. А ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, зСмля Ρƒ нас с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠΌ 0 Π’.

Если ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ рисунком, Ρ‚ΠΎ получаСтся Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΌΡ‹ ΠΊ синусоидС прибавляСм ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ напряТСниС, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС – ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ смСшаСм синусоиду с постоянным напряТСниСм, добавляя ΠΈΠ»ΠΈ убавляя Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ DC LEVEL:

ΠŸΡ€ΠΈΠ±Π°Π²ΠΈΠ» постоянноС напряТСниС ΠΊ ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠΌΡƒ сигналу:

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

А здСсь я смСшал синусоиду с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ постоянным напряТСниСм:

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ этих случая Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² настройках осциллографа β€œΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ постоянного тока”, ΠΈΠ½Π°Ρ‡Π΅ Ρƒ вас сигнал Π½Π΅ сдвинСтся.

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ МК, Π·Π°Π΄Π°Π² 5 Π’ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² постоянного напряТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΊΠΈ DC, хотя, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ писал, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΡ‚ΡŒ МК  ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ β€œTTL OUT” Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π²Ρ‹Ρ…ΠΎΠ΄ TTL Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€ΠΎΠ»ΠΈ частотомСра

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ считаСт частоту. Подаю Π½Π° Π½Π΅Π³ΠΎ частоту Π² 15 ΠšΠΈΠ»ΠΎΠ³Π΅Ρ€Ρ† с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ китайского Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ насчитал наш Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π° показания справа Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅):

Π ΠΎΠ²Π½ΠΎ 15 ΠšΠ“Ρ†.

Π₯арактСристика Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Мой Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π΄Π°Π΅Ρ‚ максимум частоты Π² 2,49 ΠœΠ“Ρ† ΠΈ Ρ€Π°Π·ΠΌΠ°Ρ… напряТСния Π² 22,2 Π’. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, для мСня этого Π²ΠΏΠΎΠ»Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достаточно, ΠΊΠ°ΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ элСктронщика. Π’ΠΎΡ‚ ΠΊ Π½Π΅ΠΌΡƒ инструкция Π½Π° русском. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΡŽ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π΅Π³ΠΎ характСристик:

Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ характСристика

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как я ΡƒΠΆΠ΅ сказал, взял я Π΅Π³ΠΎ Π½Π° АликС Π² дСнь распродаТи 11 ноября ΠΈ ΠΎΠ½ ΠΌΠ½Π΅ обошСлся Π² 8700 дСрСвянных, ΠΏΡ€ΠΈ Ρ†Π΅Π½Π΅ Ρ‚ΠΈΠΏΠ° Π² 9600, Π½ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ дСшСвлС Π½Π΅ нашСл. Π“Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° АликС этот ΠΏΡ€ΠΈΠ±ΠΎΡ€ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ этой ссылкС.Β 

Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΈΠ±ΠΎΡ€?Β  Π’ основном Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ тСстовый сигнал ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ получится Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅. Π­Ρ‚ΠΎ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π°ΡƒΠ΄ΠΈΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, рСзонансныС ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° ΠΈ Ρ‚Π΄.

А Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ этого Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΡ‚ Π§ΠΈΠΏΠ°Π”ΠΈΠΏΠ°

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π°Π·Π²Π°Π½ Ρ‚Π°ΠΊ Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ выполняСт свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (хотя Ссли ΠΎΠ½ собран качСствСнно, Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚), Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сигналы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ матСматичСским Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр: ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅, ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π°Π²Ρ‚ΠΎΡ€ Instructables ΠΏΠΎΠ΄ Π½ΠΈΠΊΠΎΠΌ The_Technocrat, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΌ ΠΈ ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ…. Он ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈ настройку Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… усилитСлСй, устройств Π½Π° логичСских микросхСмах, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ напряТСния ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π‘Π°ΠΌΡ‹ΠΉ быстрый ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ способ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ — ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π½Ρ‘ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ микросхСму, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚ΠΈΠΏΠ° IC8038:

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ частот Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠΎΠ΄Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, смСна ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… производится ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ кондСнсаторов. На Ρ‚Ρ€Ρ‘Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π°Ρ… микросхСма с обвязкой Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сразу Ρ‚Ρ€ΠΈ сигнала Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Π½Π° располоТСнный Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ»Π°Ρ‚Π΅ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ (LF351N). Π§Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ соотвСтствуСт ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Π½ΠΈΡŽ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΠΎΠ»ΡƒΠ²ΠΎΠ»Π½Π° — ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ устройств с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ микросхСмами.


Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ DIP-ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ для поставлСнной Ρ†Π΅Π»ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹: Ссли случайно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°, ΠΎΠ½ΠΈ окаТутся Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, Π° ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹, ΡƒΡ€ΠΎΠ²Π½ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, нСльзя. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π² микросхСмы. Π›ΡƒΡ‡ΡˆΠ΅ Π²Π·ΡΡ‚ΡŒ Π³Π°Π»Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ рСзисторы слуТат для ΠΏΠ»Π°Π²Π½Ρ‹Ρ… Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΠΊ: R1 — частоты, R2 — скваТности ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² (ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ сигналов Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² срСднСС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅), R5 — Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹. ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠ΅Ρ‡Π½Ρ‹Π΅ рСзисторы R3 ΠΈ R4 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ искаТСния для ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ синусоиды.

Π Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ мастСр Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ с составлСния Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ‹. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ:

Но ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΏΠ»Π°Ρ‚Ρƒ Π½Π΅ ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ (ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°, скорСС, для справки ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ссли Π²Ρ‹ Π·Π°ΠΊΠ°Π·Π°Π»ΠΈ ΠΏΠ»Π°Ρ‚Ρƒ Π±Π΅Π· ΡˆΠ΅Π»ΠΊΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ), поэтому для ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ The_Technocrat Π²Ρ‹Π»ΠΎΠΆΠΈΠ» Gerber-Ρ„Π°ΠΉΠ»Ρ‹. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π›Π£Π’ΠΎΠΌ ΠΈΠ»ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅. Всё зависит ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… возмоТностСй ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ:

На ΠΏΠ»Π°Ρ‚Ρƒ мастСр устанавливаСт всС Π΄Π΅Ρ‚Π°Π»ΠΈ согласно подсказкС Π½Π° ΡˆΠ΅Π»ΠΊΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅. ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΡ‹, Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π²Π°, Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ послС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ПослС этого Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ устройства ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ осциллограф, Π° Π½Π° Π²Ρ…ΠΎΠ΄ — двуполярный 12-Π²ΠΎΠ»ΡŒΡ‚ΠΎΠ²Ρ‹ΠΉ источник питания. Π’Ρ‹Π±Ρ€Π°Π² ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ частоту ΠΈΠ»ΠΈ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ, ΠΎΠ½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ синусоиды, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ подстроСчныС рСзисторы ΠΈ большС ΠΈΡ… Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ. ВыставляСт рСгулятор скваТности Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ нСсмотря Π½Π° это, Π½Π° экранС — Π½Π΅ совсСм синусоида:

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠΆΠ΅ упомянутых рСзисторов R3 ΠΈ R4 ΠΎΠ½ добиваСтся ΠΎΡ‚ синусоиды ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π½ΠΎ я Π΅ΠΌΡƒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π²Π΅Ρ€ΡŽ. На ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ — ΠΌΠ΅Π°Π½Π΄Ρ€:

ΠœΠ°ΡΡ‚Π΅Ρ€ Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ось рСзистора R2 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ вмСсто ΠΌΠ΅Π°Π½Π΄Ρ€Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ скваТности:

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²:

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π° транзисторы, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΏΠ»ΠΎΠΎΡ‚Π²ΠΎΠ΄ΠΎΠ², нСльзя ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ сигналы Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ. Π‘ΠΊΠ²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ШИМ.


УбСдившись, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, The_Technocrat ΠΈΠ·Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ для Π½Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ двуполярный стабилизированный Π‘ΠŸ (схСму ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅Ρ‚ смысла, Ρ‚Π°ΠΌ 7812 ΠΈ 7912 ΠΈ всё Π΄ΠΎ Π±ΠΎΠ»ΠΈ стандартно):

Π‘ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ стороны:

Π—Π°Ρ‚Π΅ΠΌ Π±Π΅Ρ€Ρ‘Ρ‚ кусок оргстСкла ΠΈ устанавливаСт Π½Π° Π½Π΅Π³ΠΎ ΠΏΠ»Π°Ρ‚Ρ‹ Π‘ΠŸ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ всСгда Π±Ρ‹Π»ΠΈ вмСстС, ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡƒΠ³Π°ΠΈ-Π½Π΅Ρ€Π°Π·Π»ΡƒΡ‡Π½ΠΈΠΊΠΈ:

Если устройство Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, мастСр совСтуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, какая Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Π°: Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ. Π‘Π°ΠΌ ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π°: смотрим, Π΅ΡΡ‚ΡŒ Π»ΠΈ сигнал Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ усилитСля, Ссли Π½Π΅Ρ‚, пСрСмСщаСтся ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΈΠ»ΠΈ ΠΊ Π²Ρ…ΠΎΠ΄Ρƒ усилитСля, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. НСт сигнала ΠΈ Ρ‚Π°ΠΌ — Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π•ΡΡ‚ΡŒ — ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² усилитСлС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ: осциллограф ΠΈΠ»ΠΈ Π½Π°ΡƒΡˆΠ½ΠΈΠΊΠΈ оставляСм Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅, Π° Ρ‚ΠΎΡ‡ΠΊΠΈ соСдинСния Π²Ρ‹Ρ…ΠΎΠ΄Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° с Π²Ρ…ΠΎΠ΄ΠΎΠΌ усилитСля касаСмся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°Π²ΠΎΠ΄ΠΊΡƒ. Если Π΄ΠΎ этого Π±Ρ‹Π»Π° Ρ‚ΠΈΡˆΠΈΠ½Π°, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ появился Ρ„ΠΎΠ½, Π΄Π΅Π»ΠΎ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅. НичСго Π½Π΅ измСнилось — Π² усилитСлС. Обоими способами ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ соСдинСния Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€-ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ-рСзистор-ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ. ΠΠ΅ΠΈΡΠΏΡ€Π°Π²Π½ΠΎΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°, ΠΈ понятно, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сборки ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡƒΠ·Π»Π° (ΠΈ ΠΈΡΠΏΡ€Π°Π²Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ микросхСмы) Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ.


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Доставка Π½ΠΎΠ²Ρ‹Ρ… самодСлок Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ

ΠŸΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… самодСлок. Никакого спама, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ!

*Заполняя Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ сайта, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ собствСнныС ΡΡ‚Π°Ρ‚ΡŒΠΈ, описания самодСлок с ΠΎΠΏΠ»Π°Ρ‚ΠΎΠΉ Π·Π° тСкст. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь.

ΠŸΡ€ΠΎ Python — Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ — Generator (Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€)

Ѐункция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄Π²ΠΈΠ΄ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ значСния.

Π‘Π»ΠΎΠ²ΠΎΠΌ Β«Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Β» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обозначаСтся функция-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ (ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Однако ΠΈΠ½ΠΎΠ³Π΄Π° слово ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΈ для обозначСния самого ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’ случаях, ΠΊΠΎΠ³Π΄Π° контСкст нСпонятСн Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹: функция-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.
Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ простым срСдством для создания ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², построСнных Π½Π° классах. Но Π² случаС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ __iter__() ΠΈ __next__() ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски, Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски возбуТдаСтся StopIteration, Π΄Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ с использованиСм классов.
Выглядят Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅, Π½ΠΎ содСрТат выраТСния с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом yield для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ гСнСрирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… for in, Π»ΠΈΠ±ΠΎ ΠΈΡ… получСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ next().

На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ yield Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ приостанавливаСтся, ΠΏΡ€ΠΈ этом сохраняСтся состояниС исполнСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ стСк ΠΈ состояниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²) функция ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ своё исполнСниС с мСста, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° приостановлСна. Π­Ρ‚ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… исполнСниС всякий Ρ€Π°Π· начинаСтся с Π½Π°Ρ‡Π°Π»Π°.

Если функция достигаСт инструкции return, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½Ρ†Π° (Π±Π΅Π· указания упомянутой инструкции), возбуТдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ StopIteration ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ исчСрпываСт сСбя.

    def my_animal_generator():

yield 'ΠΊΠΎΡ€ΠΎΠ²Π°'

for animal in ['ΠΊΠΎΡ‚', 'собака', 'мСдвСдь']:
yield animal

yield 'ΠΊΠΈΡ‚'

for animal in my_animal_generator():
print(animal)
# ΠΊΠΎΡ€ΠΎΠ²Π° ΠΊΠΎΡ‚ собака мСдвСдь ΠΊΠΈΡ‚


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вСсьма ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° сопрограммы: ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Ρ‹Π²Π°Ρ‚ΡŒ значСния нСсколько Ρ€Π°Π·, ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ приостановлСно. ЕдинствСнным Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ исполнСниС (Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ) послС Π²Ρ‹Π΄Π°Ρ‡ΠΈ значСния β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ всСгда пСрСдаётся ΠΊΠΎΠ΄Ρƒ, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΌΡƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.


Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ yield ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒΡΡ ΠΈ Π² конструкции try except. Если ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π΄ΠΎ Π΅Π³ΠΎ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (финализация происходит, ΠΊΠΎΠ³Π΄Π° счётчик ссылок Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ нуля, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ³Π΄Π° происходит сборка мусора), Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° .close(), Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π² Π±Π»ΠΎΠΊΠ΅ finally инструкции.

Π’ вСрсии +py2.2, Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° from __future__ import generators.

Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ‹ поиска: Generator (Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€), yield, yeild, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ — Function generator

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠΊΠΎΠ»ΠΎ 1990 DDS Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ , ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ , Ρ‡Π°ΡΡ‚ΡŒ элСктронного ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ оборудования ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для гСнСрирования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² элСктричСских сигналов Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ частот. НСкоторыС ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Ρ„ΠΎΡ€ΠΌ сигналов , ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ синусоида, ΠΌΠ΅Π°Π½Π΄Ρ€, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π²ΠΎΠ»Π½Ρ‹ ΠΈ ΠΏΠΈΠ»ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Π­Ρ‚ΠΈ сигналы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΈΠ»ΠΈ внСшнСго источника запуска). Π˜Π½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ схСмы , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ сигнала ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ описаны ΠΊΠ°ΠΊ ИБ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊ производству ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΎΠ»Π½, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ сигналы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΈΠ»ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ сигналы, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²ΠΎΠ»Π½Ρ‹, ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹. Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° функция, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния постоянного Ρ‚ΠΎΠΊΠ° смСщСния.

Π₯отя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π’Π§ частот, ΠΎΠ½ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ , Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΠ΅ искаТСниС ΠΈΠ»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ сигналы частоты. Когда эти Ρ‡Π΅Ρ€Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сигналов Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ подходящими.

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°Π·ΠΎΠ²ΠΎΠΉ автоподстройки с внСшним источником сигнала (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΉ частоты) ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, испытании ΠΈ Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π΅ элСктронного оборудования. НапримСр, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² качСствС источника сигнала для тСстирования усилитСлСй ΠΈΠ»ΠΈ ввСсти сигнал ошибки Π² ΠΊΠΎΠ½Ρ‚ΡƒΡ€ управлСния. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ схСмами , связанныС ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ схСмами .

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹Π΅ инструмСнты

Π—Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²ΠΎΠ»Π½Ρ‹, частота ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ»Π°Π²Π½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° этапах. Π­Ρ‚Π° Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ Π²ΠΎΠ»Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС основы для всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… своих Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ². Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ Π²ΠΎΠ»Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ зарядка ΠΈ разрядки кондСнсатора ΠΎΡ‚ постоянного источника Ρ‚ΠΎΠΊΠ° . Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ восходящСму ΠΈ нисходящСму Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡƒ измСнСнию напряТСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ напряТСниС достигаСт Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π», зарядка ΠΈΠ»ΠΈ разрядка восстанавливаСтся с использованиСм ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π° , производя Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ»Π½Ρƒ. ΠŸΡƒΡ‚Π΅ΠΌ измСнСния Ρ‚ΠΎΠΊΠ° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кондСнсатора, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ частоты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹. Sawtooth Π²ΠΎΠ»Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ заряда кондСнсатора, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠΊ, Π½ΠΎ с использованиСм Π΄ΠΈΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· источник Ρ‚ΠΎΠΊΠ° для разряда быстро — ΠΏΠΎΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Π΄ΠΈΠΎΠ΄Π° измСняСт ΠΏΠΎΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΈΠ»ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ, Ρ‚.Π΅. ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ рост ΠΈ быстроС ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ быстрый рост ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅.

50% Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²ΠΎΠ»Π½Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ² Π»ΠΈ кондСнсатор заряТаСтся ΠΈΠ»ΠΈ разряТаСтся, Ρ‡Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΠΊ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ (тСорСтичСски ΠΎΡ‚ 0% Π΄ΠΎ 100%) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ с использованиСм ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΠΈΠ»ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ сигнала. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π΄ΠΈΠΎΠ΄ формирования ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ»Π½Ρƒ Π² достаточно Ρ‚ΠΎΡ‡Π½ΡƒΡŽ синусоиду ΠΏΡƒΡ‚Π΅ΠΌ округлСния ΡƒΠ³Π»ΠΎΠ² Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π²ΠΎΠ»Π½Ρ‹ Π² процСссС , ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ отсСчСниС Π² аудиосистСмах.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ частоты Π΄ΠΎ 20 ΠœΠ“Ρ†. RF Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Π±ΠΎΠ»Π΅Π΅ высоких частот Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² строгом смыслС этого слова, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ производят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чистыС ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅ сигналы.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сигналов , Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Ρ‚Ρ‚Π΅Π½ΡŽΠ°Ρ‚ΠΎΡ€ , Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы модулирования Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала, ΠΈ часто Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ автоматичСски ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Β«Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ°Β» частота Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ управляСмого напряТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ) ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ограничСния. Π­Ρ‚Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΡƒΡŽ характСристику Π΄Π°Π½Π½ΠΎΠΉ элСктронной схСмы .

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π»Ρ‹ΠΉ ΠΈΠ»ΠΈ Ρ€ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ ΡˆΡƒΠΌ .

Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сигналов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ (AWG). Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ прямыС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ синтСз ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (DDS) , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ любой сигнал , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄.

Π₯арактСристики

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ характСристики для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ, ΠΏΠΈΠ»ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ (Ρ€Π°ΠΌΠΏΡ‹), ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сигналов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎΠ»Π½Ρ‹ любой Ρ„ΠΎΡ€ΠΌΡ‹.
  • Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ частот. НапримСр, Tektronix FG 502 (ΠΎΠΊΠΎΠ»ΠΎ 1974) ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ 0,1 Π“Ρ† Π΄ΠΎ 11 ΠœΠ“Ρ†.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ частоты 0,1 ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° Π² час для Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ 500 частСй Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ для Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.
  • МаксимальноС синусоида искаТСниС ΠΎΠΊΠΎΠ»ΠΎ 1% (точности Π΄ΠΈΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ сСти) для Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сигналов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ искаТСния мСньшС Ρ‡Π΅ΠΌ -55 Π΄Π‘ Π½ΠΈΠΆΠ΅ 50 ΠΊΠ“Ρ† ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ -40 Π΄Π‘ Π²Ρ‹ΡˆΠ΅ 50 ΠΊΠ“Ρ†.
  • НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°Π·ΠΎΠ²ΠΎΠΉ автоподстройки ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ источнику сигнала, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΉ частоты ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Амплитудной модуляции (АМ), частотной модуляции (ЧМ) ΠΈΠ»ΠΈ Ρ„Π°Π·ΠΎΠ²ΠΎΠΉ модуляции (PM), ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΎ.
  • Амплитуда Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала Π΄ΠΎ 10 Π’ ΠΎΡ‚ ΠΏΠΈΠΊΠ° Π΄ΠΎ ΠΏΠΈΠΊΠ° .
  • Амплитуда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ , с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ‚Π΅Π½ΡŽΠ°Ρ‚ΠΎΡ€Π° с шагом дСсятилСтия ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дСсятилСтия.
  • НСкоторыС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ постоянноС напряТСниС смСщСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ -5V Π΄ΠΎ + 5V.
  • Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ импСданс 50 Ом .

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния инструкции для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ сигнала, с обСспСчСниСм Π²Ρ‹Ρ…ΠΎΠ΄Π°. Π’Π°ΠΊ , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для гСнСрирования сигнала; Ссли Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ частот ΠΈ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌΠΈ, Ρ‚ΠΎ звуковая ΠΊΠ°Ρ€Ρ‚Π° установлСна Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π²ΠΎΠ»Π½Ρ‹.

ΠŸΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Π΅ элСмСнты

Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ сигналов

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ элСктронной схСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ сигнала Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ устройства , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π² области связи ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ цСпях, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² инструмСнтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π­ΠΊΠ·Π°Ρ€ XR2206 ΠΈ Π² Intersil ICL8038 ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ схСмы , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ синус, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Ρ€Π°ΠΌΠΏΡ‹, ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹Π΅ сигналы , ΠΏΡ€ΠΈ частотС напряТСния-управляСмой .

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ элСмСнт ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ сигнал , ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ матСматичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚Π°ΠΊΠΈΠ΅ , ΠΊΠ°ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ) Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄; Ρ‚Π°ΠΊΠΈΠ΅ устройства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связью систСм ΠΈ Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… . ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Raytheon ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€ΡƒΠ±ΠΎΠΊ QK329 ΠΈ Π²Ρ…ΠΎΠ΄ усилитСля Intersil ICL8048 / Π°Π½Ρ‚ΠΈΠ»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ°.

ΠœΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠœΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ связями , ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΊΡƒΠ»Π°Ρ‡ΠΊΠΎΠ²ΠΎΠ³ΠΎ слСдящими ΠΈΠ»ΠΈ Π½Π΅ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹Π΅ колСса , ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для воспроизвСдСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π»ΠΈΠ±ΠΎ пСриодичСскиС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ , ΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ косинус) ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ (Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ, параболичСскиС, ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π΄.).

Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ±ΠΎΡ€Ρ‹ , Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ давлСния, высотомСр ΠΈ Π±Π°Ρ€ΠΎΠΌΠ΅Ρ‚Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ связи Ρ‚ΠΈΠΏΠ° Π² качСствС срСдства Π»ΠΈΠ½Π΅Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π”ΠΎ появлСния Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин, мСханичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ систСм управлСния ΠΎΠ³Π½Π΅ΠΌ ΠΈ мСханичСских ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ΠΎΠ² .

  • Π§Π΅Ρ‚Ρ‹Ρ€Π΅-Π±Π°Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Log (ΠΈ) Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 1 <ΠΈ <10.

  • ΠšΡƒΠ»ΠΈΡΠ½Ρ‹ΠΉ-слайдСр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Log (ΠΈ) Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 1 <ΠΈ <10.

  • ΠŸΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ-кулисный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Tan (ΠΈ) ΠΏΡ€ΠΈ 0 <ΠΈ <45 Β°.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

внСшняя ссылка

ВсС ΠΎ выраТСниях-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… списков, мноТСств ΠΈ словарСй / Habr

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, посСщСнного Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями. Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒΡΡ ΠΈ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ….

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΈ поэтому ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсна Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ, Π½ΠΎ ΠΈ достаточно ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.

Π‘ΡƒΠ΄ΡƒΡ‚ рассмотрСны: выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ списка, словаря ΠΈ мноТСства, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (5 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²), Ρ€Π°Π±ΠΎΡ‚Π° с enumerate(), range().
А Ρ‚Π°ΠΊΠΆΠ΅: классификация ΠΈ тСрминология, синтаксис, Π°Π½Π°Π»ΠΎΠ³ΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния.

Π― постарался Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ тонкости ΠΈ Π½ΡŽΠ°Π½ΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΠΎ всСх ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΈ курсах, ΠΈ, Π² Ρ‚ΠΎΠΌ числС, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° Habrahabr ΡΡ‚Π°Ρ‚ΡŒΡΡ… Π½Π° эту Ρ‚Π΅ΠΌΡƒ.

ОглавлСниС:


1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ классификация.
2. Бинтаксис.
3. Аналоги Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° for ΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
4. ВыраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
5. ГСнСрация стандартных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.
6. ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ частичный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€.
7. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
8. ИспользованиС range().
9. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.
10. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Бсылки ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅.

1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ классификация


1.1 Π§Ρ‚ΠΎ ΠΈ Π·Π°Ρ‡Π΅ΠΌ

  • Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ способа Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ элСмСнтов, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.
  • Π’ процСссС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ прСобразования Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ условий ΠΈ модификация элСмСнтов.
  • Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ синтаксичСским сахаром ΠΈ Π½Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π±Π΅Π· ΠΈΡ… использования.

1.2 ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

  • Π‘ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис, Ρ‡Π΅ΠΌ гСнСрация Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅.
  • Π‘ΠΎΠ»Π΅Π΅ понятный ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ синтаксис Ρ‡Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ map(), filter() ΠΈ lambda.
  • Π’ Ρ†Π΅Π»ΠΎΠΌ: быстрСС Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ, Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, особСнно ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠ΄Π΅.

1.3 ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΈ особСнности

Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ сущСствуСт нСкоторая тСрминологичСская ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° Π² русских названиях Ρ‚ΠΎΠ³ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обозначСния:

  • Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ (generator expression) β€” Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ создаСт Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.
  • Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка (list comprehension), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° словаря (dictionary comprehension) ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° мноТСства (set comprehension).


Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… мСстах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нагромоТдСния Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Β» Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠΉ.

2. Бинтаксис


Для Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠ±Ρ‰Π΅Π³ΠΎ синтаксиса выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.
Π’Π°ΠΆΠ½ΠΎ: этот синтаксис ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² ΠΈ для выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ для всСх Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Ρ€Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Π² ΠΊΠ°ΠΊΠΈΡ… скобках ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ (смотритС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ).

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π²Π°ΠΆΠ½Ρ‹Π΅ для понимания:

  • Π’Π²ΠΎΠ΄ β€” это ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ функция-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, коллСкция β€” любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π½Π΅ΠΌΡƒ.
  • УсловиС β€” это Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнт ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ссли элСмСнт Π΅ΠΌΡƒ Π½Π΅ удовлСтворяСт, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½.
  • ЀинальноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ просто Π²Ρ‹Π²ΠΎΠ΄ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

2.1 Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис

list_a = [-2, -1, 0, 1, 2, 3, 4, 5]    # ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ исходный список
list_b = [x for x in list_a]           # Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ список ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка
print(list_b)                          # [-2, -1, 0, 1, 2, 3, 4, 5]
print(list_a is list_b)                # False - это Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹!

По сути, Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного Ρ‚ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΌΡ‹ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ копию списка. Π”Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ»ΠΈ просто ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ· Ρ‚ΠΈΠΏΠ° Π² Ρ‚ΠΈΠΏ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² особого смысла Π½Π΅Ρ‚ β€” это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ (Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ†ΠΈΠΊΠ»Π°).

ΠœΠΎΡ‰ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ условия для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ элСмСнта Π² Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ).

2.2 ДобавляСм условиС для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ


Π’Π°ΠΆΠ½ΠΎ: УсловиС провСряСтся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты Π΅ΠΌΡƒ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ΄ΡƒΡ‚ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ условиС β€” Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты.

# if x % 2 == 0 - остаток ΠΎΡ‚ дСлСния Π½Π° 2 Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ - число Ρ‡Π΅Ρ‚Π½ΠΎΠ΅
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] 
list_b = [x for x in list_a if x % 2 == 0]
print(list_b)   # [-2, 0, 2, 4]

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько условий, комбинируя ΠΈΡ… логичСскими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ:
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_b = [x for x in list_a if x % 2 == 0 and x > 0]
# Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅ x, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ большС нуля
print(list_b)   # [2, 4]

2.3 ДобавляСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ элСмСнта Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ


ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ сам Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния выраТСния с Π½ΠΈΠΌ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Π’Π°ΠΆΠ½ΠΎ: Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполняСтся нСзависимо Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, обрабатывая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ.

НапримСр, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта:

list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_b = [x**2 for x in list_a]
print(list_b)   # [4, 1, 0, 1, 4, 9, 16, 25]

Или ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρ‹ строк c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len()
list_a = ['a', 'abc', 'abcde']
list_b = [len(x) for x in list_a]
print(list_b)   # [1, 3, 5]

2.4 Π’Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ выраТСния


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (начиная с Python 2.5) Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ if-else для вСтвлСния Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ выраТСния.

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС:

  • Условия вСтвлСния ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π΅ послС, Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.
  • Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС if-else это Π½Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ выраТСния, Π° Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ самого выраТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пСрСмСнная ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, Π½ΠΎ Π² зависимости ΠΎΡ‚ условия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ!
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_b = [x if x < 0 else x**2 for x in list_a]
# Если x-ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ - Π±Π΅Ρ€Π΅ΠΌ x, Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях - Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ x
print(list_b)   # [-2, -1, 0, 1, 4, 9, 16, 25]

Никто Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅:
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_b = [x**3 if x < 0 else x**2 for x in list_a if x % 2 == 0]
# Π²Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ пропускаСт Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ значСния
# послС этого Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΡƒΠ±, Π° для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚
print(list_b)   # [-8, 0, 4, 16]

Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_b = []
for x in list_a:
    if x % 2 == 0:
        if x < 0:
            list_b.append(x ** 3)
        else:
            list_b.append(x ** 2)
print(list_b)   # [-8, 0, 4, 16]

2.5 Π£Π»ΡƒΡ‡ΡˆΠ°Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ


НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Python синтаксис позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСносы строк Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ синтаксис Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ для чтСния:
numbers = range(10)

# Before
squared_evens = [n ** 2 for n in numbers if n % 2 == 0]

# After
squared_evens = [
    n ** 2
    for n in numbers
    if n % 2 == 0
]

3. Аналоги Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° for ΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ


Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ Π±Π΅Π· Π½ΠΈΡ…. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ β€” сдСлаСм ΠΈΠ· списка чисСл список ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΈ Ρ€Π΅ΡˆΠΈΠΌ Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²:

3.1 РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка

numbers = range(10)
squared_evens = [n ** 2 for n in numbers if n % 2 == 0]
print(squared_evens)   # [0, 4, 16, 36, 64]

3.2. РСшСниС c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for


Π’Π°ΠΆΠ½ΠΎ: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° for, Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ выраТСния.
numbers = range(10)
squared_evens = []
for n in numbers:
    if n % 2 == 0:
        squared_evens.append(n ** 2)
print(squared_evens)   # [0, 4, 16, 36, 64]

Π’ Ρ†Π΅Π»ΠΎΠΌ, для ΠΎΡ‡Π΅Π½ΡŒ слоТных ΠΈ комплСксных Π·Π°Π΄Π°Ρ‡, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ понятнСй ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Для Π±ΠΎΠ»Π΅Π΅ простых Π·Π°Π΄Π°Ρ‡, синтаксис выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅ΠΉ ΠΈ Π»Π΅Π³Ρ‡Π΅ Π² Ρ‡Ρ‚Π΅Π½ΠΈΠΈ.

3.3. РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.


Для Π½Π°Ρ‡Π°Π»Π°, Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ β€” это Ρ‚ΠΎΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ старыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡, комбинируя map(), lambda ΠΈ filter().

numbers = range(10)
squared_evens = map(lambda n: n ** 2, filter(lambda n: n % 2 == 0, numbers))
print(squared_evens)         # <map object at 0x7f661e5dba20>
print(list(squared_evens))   # [0, 4, 16, 36, 64]
# ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Python 2 Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ squared_evens окаТСтся сразу список, Π° Π² Python 3 Β«map objectΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π² список с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ list()

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ, читаСтся ΠΎΠ½ тяТСло ΠΈ использованиС синтаксиса Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ понятным.

4. ВыраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹


ВыраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (generator expressions) доступны, начиная с Python 2.4. ОсновноС ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ элСмСнт ΠΏΠΎ-ΠΎΠ΄Π½ΠΎΠΌΡƒ, Π½Π΅ загруТая Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ сразу всю ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ.

UPD: Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° этот ΠΌΠΎΠΌΠ΅Π½Ρ‚: Ссли ΠΌΡ‹ создаСм Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· использования Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎ ΠΎΠ½Π° загруТаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, соотвСтствСнно, это ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ расход памяти Π’Π°ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π² ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях памяти ΠΌΠΎΠΆΠ΅Ρ‚ просто Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈ Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«ΡƒΠΏΠ°Π΄Π΅Ρ‚Β» с MemoryError. Π’ случаС использования выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ происходит, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ элСмСнты ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ-ΠΎΠ΄Π½ΠΎΠΌΡƒ, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
my_gen = (i for i in list_a)    # Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€
print(next(my_gen))     # -2 - ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ элСмСнт Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
print(next(my_gen))     # -1 - ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ элСмСнт Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²


  1. Π“Π΅Π½Π°Ρ€Π°Ρ‚ΠΎΡ€ нСльзя ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· скобок β€” это синтаксичСская ошибка.
    # my_gen = i for i in list_a      # SyntaxError: invalid syntax

  2. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ скобки Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_sum = sum(i for i in list_a)
    # my_sum = sum((i for i in list_a))  # Ρ‚Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ
    print(my_sum)   # 12

  3. НСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ len()
    # my_len = len(i for i in list_a)  # TypeError: object of type 'generator' has no len()

  4. НСльзя Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ элСмСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ print()
    print(my_gen)   # <generator object <genexpr> at 0x7f162db32af0>
    

  5. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС прохоТдСния ΠΏΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ ΠΎΠ½ΠΎ остаСтся пустым!
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_gen = (i for i in list_a)
    print(sum(my_gen))  # 12
    print(sum(my_gen))  # 0

  6. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ бСсконСчным.
    import itertools
    inf_gen = (x for x in itertools.count())  # бСсконСчный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚ 0 to бСсконСчности!
    Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании «эффСкт» Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΡ‚ бСсконСчного Ρ†ΠΈΠΊΠ»Π°.
  7. К Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ срСзы!
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_gen = (i for i in list_a)
    my_gen_sliced = my_gen[1:3]
    # TypeError: 'generator' object is not subscriptable

  8. Из Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

5. ГСнСрация стандартных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ


5.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈΠ· выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈΠ· выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ list(), tuple(), set(), frozenset()

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ мноТСство ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ станСт ΡƒΠΆΠ΅ послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Для строки Ρ‚Π°ΠΊΠΎΠΉ способ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! Бинтаксис создания Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° словаря Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности, ΠΎΠ½ рассмотрСн Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄-Ρ€Π°Π·Π΄Π΅Π»Π΅.

  1. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° присвоСнного ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ создания ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_gen = (i for i in list_a)   # Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€
    my_list = list(my_gen) 
    print(my_list)          # [-2, -1, 0, 1, 2, 3, 4, 5]

  2. НаписаниС выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° сразу Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_list = list(i for i in list_a)
    print(my_list)          # [-2, -1, 0, 1, 2, 3, 4, 5]

    Π’ΠΎ ΠΆΠ΅ самоС для ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°, мноТСства ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ мноТСства
    # ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
    my_tuple = tuple(i for i in list_a)
    print(my_tuple)         # (-2, -1, 0, 1, 2, 3, 4, 5)
    
    # мноТСство
    my_set = set(i for i in list_a)
    print(my_set)           # {0, 1, 2, 3, 4, 5, -1, -2}
    
    # Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ мноТСство
    my_frozenset = frozenset(i for i in list_a)
    print(my_frozenset)     # frozenset({0, 1, 2, 3, 4, 5, -1, -2})

5.2 Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ-ΠΎΠ΄Π½ΠΎΠΌΡƒ, Π½Π΅ загруТая всю ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΏΡ€ΠΈ использовании Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, коллСкция гСнСрируСтся сразу Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

БоотвСтствСнно, вмСсто особСнности Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² пСрСчислСнных Π²Ρ‹ΡˆΠ΅, такая коллСкция Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ всСми стандартными свойствами Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ мноТСства ΠΈ словаря ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ скобки, Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ словаря указываСтся Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ элСмСнт ΠΊΠ»ΡŽΡ‡: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

  1. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка (list comprehension)
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_list = [i for i in list_a]
    print(my_list)          # [-2, -1, 0, 1, 2, 3, 4, 5]

    НС ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ…!
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_list = [(i for i in list_a)]
    print(my_list)          # [<generator object <genexpr> at 0x7fb81103bf68>]

  2. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ мноТСства (set comprehension)
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    my_set= {i for i in list_a}
    print(my_set)       # {0, 1, 2, 3, 4, 5, -1, -2} - порядок случаСн

  3. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ словаря (dictionary comprehension)
    ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ словаря
    dict_abc = {'a': 1, 'b': 2, 'c': 3, 'd': 3}
    dict_123 = {v: k for k, v in dict_abc.items()}
    print(dict_123)  # {1: 'a', 2: 'b', 3: 'd'}
                     # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΡ‹ потСряли "с"! Π’Π°ΠΊ ΠΊΠ°ΠΊ значСния Π±Ρ‹Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, 
                     # Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ стали ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ.

    Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ ΠΈΠ· списка:
    list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
    dict_a = {x: x**2 for x in list_a}
    print(dict_a)   # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, -2: 4, -1: 1, 5: 25}

    Π’Π°ΠΆΠ½ΠΎ! Π’Π°ΠΊΠΎΠΉ синтаксис создания словаря Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСльзя, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ синтаксис (Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ longclaps Π·Π° подсказку Π² коммСнтариях):
    # dict_gen = (x: x**2 for x in list_a)      # SyntaxError: invalid syntax
    dict_gen = ((x, x ** 2) for x in list_a)    # ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°-выраТСния для словаря
    # dict_a = dict(x: x**2 for x in list_a)    # SyntaxError: invalid syntax
    dict_a = dict((x, x ** 2) for x in list_a)  # ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ синтаксиса ΠΎΡ‚ @longclaps

5.3 ГСнСрация строк


Для создания строки вмСсто синтаксиса Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ строки .join(), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ для объСдинСния Π² строку Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ строками!
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ прямо Π² .join() ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ приводя элСмСнты ΠΊ строковому Ρ‚ΠΈΠΏΡƒ
my_str = ''.join(str(x) for x in list_a)
print(my_str)  # -2-1012345

6. ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ частичный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€


6.1 Π Π°Π±ΠΎΡ‚Π° с enumerate()


Иногда Π² условиях Π·Π°Π΄Π°Ρ‡ΠΈ Π² условии-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π΅ Π½ΡƒΠΆΠ½Π° Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° значСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта, Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт.

Для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ enumerate(), Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ счСтчик ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Ρ†ΠΈΠΊΠ»Π΅:

for i, x in enumerate(iterable)
здСсь x β€” Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт i β€” Π΅Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€, начиная с нуля

ΠŸΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с индСксами:

list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_d = [(i, x) for i, x in enumerate(list_a)]
print(list_d)   # [(0, -2), (1, -1), (2, 0), (3, 1), (4, 2), (5, 3), (6, 4), (7, 5)]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ β€” Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ списка ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт ΠΈΠ· исходного списка:
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
list_e = [x for i, x in enumerate(list_a, 1) if i % 3 == 0]
print(list_e)   # [0, 3]

Π’Π°ΠΆΠ½Ρ‹Π΅ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ enumerate():

  1. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ enumerate():
    • enumerate(iterator) Π±Π΅Π· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° считаСт с 0.
    • enumerate(iterator, start) β€” Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ с значСния start. Π£Π΄ΠΎΠ±Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ с 1, Π° Π½Π΅ 0.

  2. enumerate() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· порядкового Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ значСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ΠšΠΎΡ€Ρ‚Π΅ΠΆ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ двумя способами:
    • (i, j) for i, j in enumerate(iterator) β€” скобки Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ°Ρ€Π΅ Π½ΡƒΠΆΠ½Ρ‹!
    • pair for pair in enumerate(mylist) β€” ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ сразу с ΠΏΠ°Ρ€ΠΎΠΉ

  3. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ для всСх ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… элСмСнтов, Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΎΠ½ΠΈ Π² дальнСйшСм условиС ΠΈΠ»ΠΈ Π½Π΅Ρ‚!
    first_ten_even = [(i, x) for i, x in enumerate(range(10)) if x % 2 == 0]
    print(first_ten_even)   # [(0, 0), (2, 2), (4, 4), (6, 6), (8, 8)]

  4. Ѐункция enumerate() Π½Π΅ обращаСтся ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π° просто Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ счСтчик ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… элСмСнтов, поэтому Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для нСупорядочСнных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… индСксации.
  5. Если ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ количСство элСмСнтов Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ enumerate() счСтчику (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ if i < 10), Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ всС Ρ€Π°Π²Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² случаС ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ рСсурс-Π·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎ. РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ рассматриваСтся Π½ΠΈΠΆΠ΅ Π² ΠΏΠΎΠ΄-Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ части ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎΒ».

6.2 ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ части ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ.


Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ большой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ бСсконСчного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Если ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с условиСм ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ enumerate() индСксу ΠΈΠ»ΠΈ срСз ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π½Π°ΠΌ Π² любом случаС придСтся ΠΏΡ€ΠΎΠΉΡ‚ΠΈ всю ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° это ΡƒΠΉΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… рСсурсов.

Π’Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ islice() ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° itertools.

import itertools
first_ten = (itertools.islice((x for x in range(1000000000) if x % 2 == 0), 10))
print(list(first_ten))  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Для ΡΠΎΠΌΠ½Π΅Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ: провСряСм врСмя выполнСния
import time
import itertools

# На Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ с ΠΌΠ°Π»Ρ‹ΠΌ количСством элСмСнтов
start_time = time.time()
first_ten = (itertools.islice((x for x in range(100) if x % 2 == 0), 10))
print(list(first_ten))  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
elapsed_time = time.time() - start_time
print(elapsed_time)  # 3.409385681152344e-05

# На Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ количСством элСмСнтов
start_time = time.time()
first_ten = (itertools.islice((x for x in range(100000000) if x % 2 == 0), 10))
print(list(first_ten))  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
elapsed_time = time.time() - start_time
print(elapsed_time)  # 1.1205673217773438e-05

# Π’ΠΎ Π΅ΡΡ‚ΡŒ максимальноС количСство элСмСнтов Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ range() ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π½Π° 6 порядков, 
# Π° врСмя исполнСния ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ порядка

7. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹


Рассмотрим Π±ΠΎΠ»Π΅Π΅ комплСксныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ»ΠΈ сами выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², со своими особСнностями ΠΈ сфСрой примСнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹, рассмотрим ΠΈΡ… ΠΏΠΎ-ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° послС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ схСму.

7.1 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру.

Π’Π°ΠΆΠ½ΠΎ! ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ порядок слСдования инструкций for in Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ (слСва-Π½Π°ΠΏΡ€Π°Π²ΠΎ), ΠΊΠ°ΠΊ ΠΈ Π² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π±Π΅Π· Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ†ΠΈΠΊΠ»Π°Ρ… (свСрху-Π²Π½ΠΈΠ·)! Π’ΠΎΠΆΠ΅ справСдливо ΠΈ ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… уровнях влоТСнности.

7.1.1 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ for Π³Π΄Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ нСзависимым ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ


ΠžΠ±Ρ‰ΠΈΠΉ синтаксис: [expression for x in iter1 for y in iter2]
ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

НапримСр, создадим ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² для Π½Π°Ρ‡Π°Π»Π° Π΅Π³ΠΎ значСния нулями.

rows = 1, 2, 3
cols = 'a', 'b'
my_dict = {(col, row): 0 for row in rows for col in cols}
print(my_dict)  # {('a', 1): 0, ('b', 2): 0, ('b', 3): 0, ('b', 1): 0, ('a', 3): 0, ('a', 2): 0}

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ…
my_dict['b', 2] = 10   # Π·Π°Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ-ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ
print(my_dict['b', 2])   # 10 - ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ-ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ

Π’ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ условиями-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅:
rows = 1, 2, 3, -4, -5
cols = 'a', 'b', 'abc'
# Для наглядности разнСсСм Π½Π° нСсколько строк
my_dict = {
    (col, row): 0  # ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт состоит ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π°-ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ знаСчния
    for row in rows if row > 0   # Волько ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния
    for col in cols if len(col) == 1  # Волько ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅
    }
print(my_dict)  # {('a', 1): 0, ('b', 2): 0, ('b', 3): 0, ('b', 1): 0, ('a', 3): 0, ('a', 2): 0}

Π­Ρ‚Π° ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ΅Π½Π½Π°Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°
rows = 1, 2, 3, -4, -5
cols = 'a', 'b', 'abc'
my_dict = {}
for row in rows:
    if row > 0:
        for col in cols:
            if len(col) == 1:
                my_dict[col, row] = 0
print(my_dict)  # {('a', 1): 0, ('b', 2): 0, ('b', 3): 0, ('b', 1): 0, ('a', 3): 0, ('a', 2): 0}

7.1.2 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ for Π³Π΄Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ внСшнСго Ρ†ΠΈΠΊΠ»Π°


ΠžΠ±Ρ‰ΠΈΠΉ синтаксис: [expression for x in iterator for y in x].

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ…, прСвращая Π΅Π΅ Π² Β«ΠΏΠ»ΠΎΡΠΊΡƒΡŽΒ» ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΡ‹ Π²ΠΎ внСшнСм Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ строкам, Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΏΠΎ элСмСнтам ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки нашСй Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ структуры.

Допустим Ρƒ нас Π΅ΡΡ‚ΡŒ двумСрная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° β€” список списков. И ΠΌΡ‹ ΠΆΠ΅Π»Π°Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² плоский ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ список.

matrix = [[0, 1, 2, 3],
          [10, 11, 12, 13],
          [20, 21, 22, 23]]

# РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка:
flattened = [n for row in matrix for n in row]
print(flattened)    # [0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23]

Π’Π°ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Π°, Ρ€Π΅ΡˆΠ΅Π½Π½Π°Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²
flattened = []
for row in matrix:
    for n in row:
        flattened.append(n)
print(flattened)

UPD:Π˜Π·ΡΡ‰Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²
import itertools
flattened = list(itertools.chain.from_iterable(matrix))  # ΠΎΡ‚ @iMrDron
# Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списков 
# ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ ΠΊ использованию для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

flattened = sum(a, [])  # ΠΎΡ‚ @YuriM1983
# sum(a, []) ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ(O(n^2)) 
# ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ совсСм Π½Π΅ рСкомСндуСтся ΠΊ использованию для Ρ‚Π°ΠΊΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ

7.2 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹


Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΠΊΠ»Ρ‹ for Π²Π½ΡƒΡ‚Ρ€ΠΈ выраТСния-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ ΠΈ сами Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ примСняСтся ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру.

Π’Π°ΠΆΠ½ΠΎ!: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ΡˆΠ΅ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π²Π½Π°Ρ‡Π°Π»Π΅ обрабатываСтся внСшний Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΡ‚ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ порядок ΠΈΠ΄Π΅Ρ‚ справа-Π½Π°Π»Π΅Π²ΠΎ.

НиТС рассмотрим Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ использования.

7.2.1 β€” Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” двумСрная ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ…


ΠžΠ±Ρ‰ΠΈΠΉ синтаксис: [[expression for y in iter2] for x in iter1]
ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создадим ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ· 5 столбцов ΠΈ 3 строк ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅ нулями:

w, h = 5, 3  # Π·Π°Π΄Π°Π΄ΠΈΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высотку ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
matrix = [[0 for x in range(w)] for y in range(h)]
print(matrix)   # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ этой ΠΆΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ двумя Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ — ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° порядок влоТСния
matrix = []
for y in range(h):
    new_row = []
    for x in range(w):
        new_row.append(0)
    matrix.append(new_row)
print(matrix)   # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ПослС создания ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом
# Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ значСния ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ - индСксы Π² спискС списков)
matrix[0][0] = 1
matrix[1][3] = 3
print(matrix)   # [[1, 0, 0, 0, 0], [0, 0, 0, 3, 0], [0, 0, 0, 0, 0]]

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ
x, y = 1, 3
print(matrix[x][y])  # 3

7.2.2 β€” Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” двумСрная ΠΈΠ· Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ


ΠžΠ±Ρ‰ΠΈΠΉ синтаксис: [[expression for y in x] for x in iterator]
ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠžΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ…, сохраняя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ структуру.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ:

matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

Π’ΠΎΠ·Π²Π΅Π΄Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚:
squared = [[cell**2 for cell in row] for row in matrix]
print(squared)    # [[1, 4, 9, 16], [25, 36, 49, 64], [81, 100, 121, 144]]

Π­Ρ‚Π° ΠΆΠ΅ опСрация Π² Π²ΠΈΠ΄Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²
squared = []
for row in matrix:
    new_row = []
    for cell in row:
        new_row.append(cell**2)
    squared.append(new_row)
print(squared)    # [[1, 4, 9, 16], [25, 36, 49, 64], [81, 100, 121, 144]]

ΠžΠ±ΠΎΠ±Ρ‰ΠΈΠΌ всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ схСмС (ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ):

7.3 β€” Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ


Π’Π°ΠΊ ΠΊΠ°ΠΊ любой Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Ρ†ΠΈΠΊΠ»Π΅ for, это Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ для создания Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.
ΠŸΡ€ΠΈ этом синтаксичСски это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π²Π° выраТСния ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠŸΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ ΠΈ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.
Допустим Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚Π°ΠΊΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списков:

list_a = [x for x in range(-2, 4)]    # Π’Π°ΠΊ сдСлано для дальнСйшСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° синтаксиса, 
                                      # ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ досточно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ range(-2, 4)
list_b = [x**2 for x in list_a]

Π’ΠΎΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π² ΠΎΠ΄Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, подставив вмСсто list_a Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка:
list_c = [x**2 for x in [x for x in range(-2, 4)]]
print(list_c)  # [4, 1, 0, 1, 4, 9]

UPD ΠΎΡ‚ longclaps: ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΎΡ‚ комбинирования Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ слоТной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(x) = u(v(x))
list_c = [t + t ** 2  for t in (x ** 3 + x ** 4 for x in range(-2, 4))]

8. ИспользованиС range()


Говоря ΠΎ способах Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, нСльзя ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range(), которая ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания арифмСтичСских ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.
ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ range():

  • НаиболСС часто функция range() примСняСтся для запуска Ρ†ΠΈΠΊΠ»Π° for Π½ΡƒΠΆΠ½ΠΎΠ΅ количСство Ρ€Π°Π·. НапримСр, смотритС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹ΡˆΠ΅.
  • Π’ Python 3 range() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ элСмСнт.
  • Π˜ΡΠΏΠΎΠ»Π»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π² срСзах (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ):
    • range(stop) β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС с 0 Π΄ΠΎ stop-1;
    • range(start, stop) β€” Аналогично ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ нуля, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅;
    • range(start, stop, step) β€” ДобавляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ шага, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

  • Π’ Python 2 Π±Ρ‹Π»ΠΈ 2 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
    • range(…) которая Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ list(range(…)) Π² Python 3 β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Π²Ρ‹Π΄Π°Π²Π°Π»Π° Π½Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π° сразу Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ список. Π’ΠΎ Π΅ΡΡ‚ΡŒ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти, описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4 Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² Python 2 Π½Π°Π΄ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ!
    • xrange(…) β€” которая Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ range(…) Π² Python 3 ΠΈ ΠΈΠ· 3 вСрсии Π±Ρ‹Π»Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:
print(list(range(5)))           # [0, 1, 2, 3, 4]
print(list(range(-2, 5)))       # [-2, -1, 0, 1, 2, 3, 4]
print(list(range(5, -2, -2)))   # [5, 3, 1, -1]

9. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹


9.1 ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ нСскольким спискам
import itertools
l1 = [1,2,3]
l2 = [10,20,30]
result = [l*2 for l in itertools.chain(l1, l2)]
print(result)   # [2, 4, 6, 20, 40, 60]

9.2 Вранспозиция ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
(ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΊΠΎΠ³Π΄Π° строки ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами со столбцами).

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]]

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π΅ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:
transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print(transposed)  # [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Π­Ρ‚Π° ΠΆΠ΅ транспозиция ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°
transposed = []
for i in range(len(matrix[0])):
    new_row = []
    for row in matrix:
        new_row.append(row[i])
    transposed.append(new_row)
print(transposed)  # [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

И Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΎΡ‚ @longclaps
transposed = list(map(list, zip(*matrix)))
print(transposed)  # [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

9.3 Π—Π°Π΄Π°Ρ‡Π° Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ
# Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ список Π΄Π½Π΅ΠΉ ΠΎΡ‚ 1 Π΄ΠΎ 31 с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
days = [d for d in range(1, 32)]

# Π”Π΅Π»ΠΈΠΌ список Π΄Π½Π΅ΠΉ Π½Π° Π½Π΅Π΄Π΅Π»ΠΈ
weeks = [days[i:i+7] for i in range(0, len(days), 7)]
print(weeks)   # [[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31]]

# Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 5 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ, отбрасывая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅
work_weeks = [week[0:5] for week in weeks]
print(work_weeks)   # [[1, 2, 3, 4, 5], [8, 9, 10, 11, 12], [15, 16, 17, 18, 19], [22, 23, 24, 25, 26], [29, 30, 31]]

# Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ списком Π΄Π½Π΅ΠΉ - ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ
wdays = [item for sublist in work_weeks for item in sublist]
print(wdays)   # [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 29, 30, 31]

МоТно ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ изящно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ индСксы
# Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ список Π΄Π½Π΅ΠΉ ΠΎΡ‚ 1 Π΄ΠΎ 31 с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
days = [d for d in range(1, 32)]

wdays6 = [wd for (i, wd) in enumerate(days, 1) if i % 7 != 0]  # УдаляСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ 7-ΠΉ дСнь
# УдаляСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ 6 дСнь Π² ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ удалСния:
wdays5 = [wd for (i, wd) in enumerate(wdays6, 1) if i % 6 != 0]

print(wdays5)
# [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 29, 30, 31]

# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ просто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° условия Π² ΠΎΠ΄Π½ΠΎΠΌ if Π½Π΅ получится,
# ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ 12-ΠΉ дСнь дСлится Π½Π° 6, Π½ΠΎ Π½Π΅ Π²Ρ‹ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° послСдний 2 дня Π½Π΅Π΄Π΅Π»ΠΈ!

# Π¨ΠΈΠΊΠ°Ρ€Π½ΠΎΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ @sophist:
days = [d + 1 for d in range(31) if d % 7 < 5]

10. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Бсылки ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅


  1. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ англоязычная ΡΡ‚Π°Ρ‚ΡŒΡ с Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ объяснСниСм Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ:

  2. Если Ρƒ Вас Π΅ΡΡ‚ΡŒ слоТности с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ выраТСниями, посмотритС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Π°Π½Π³Π»ΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π³Π΄Π΅ проводятся Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ выраТСниями ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с SQL ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Excel.НапримСр Ρ‚Π°ΠΊ:
    squared_evens = [n ** 2              # SELECT
                    for n in numbers    # FROM
                    if n % 2 == 0]      # WHERE

  3. UPD ΠΎΡ‚ fireSparrow: Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Python β€” PythonQL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² стилС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.
  4. Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° английском, довольно наглядно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ синтаксис Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.
  5. Если Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° английском).


ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ:

  • Если я Π³Π΄Π΅-Ρ‚ΠΎ допустил Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΡƒΡ‡Ρ‘Π» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ β€” ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях, Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ·ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ вашСго авторства.
  • Если ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ понятны ΠΈ трСбуСтся ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ β€” ΠΏΠΈΡˆΠΈΡ‚Π΅ ваши вопросы Π² коммСнтариях β€” ΠΈΠ»ΠΈ я ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π΄Π°Π΄ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚, Π° Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ вопросы с ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ·ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°

Π’80 я ΠΈ HS801 ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Β  ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ².

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

Частотный Π²Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠΈ исслСдуСмого сигнала

Частотный Π²Ρ‹Ρ…ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сигнал ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ -2.5 Π΄ΠΎ + 2.5 Π²ΠΎΠ»ΡŒΡ‚, ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ частоту ΠΌΠ΅ΠΆΠ΄Ρƒ 100 Π“Ρ† ΠΈ 100 ΠΊΠ“Ρ†.

Π’Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ частотный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, наТимая ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ частоту ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΠΈΠΆΠΊΠ°. ВСкущая частота ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π²Ρ‹ΡˆΠ΅ Π΄Π²ΠΈΠΆΠΊΠ°.

Когда частота установлСна, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавишного Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится справа. По Ρ‰Π΅Π»Ρ‡ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚ΠΎ выбранная частота Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° сохраняСтся, Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

-119-

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

TiePieSCOPE HS80 я AWG, Handyscope 3 ΠΈ Π’Π 80 я AWG ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° сигнал ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свою Ρ„ΠΎΡ€ΠΌΡƒ, частоту, ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смСщСн.

Наряду с этим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ содСрТит Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ спСктра, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ частотныС характСристики ΡƒΠ·Π»ΠΎΠ² ΠΈΠ»ΠΈ Ρ†Π΅ΠΏΠ΅ΠΉ.

Π’Π°ΠΊ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ прСдусматриваСт ΠΌΠ½ΠΎΠ³ΠΈΠ΅ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установлСнныС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ПЦБ. ПЦБ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠŸΡ€ΡΠΌΠΎΠΉ Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π‘ΠΈΠ½Ρ‚Π΅Π·, Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя основы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ частотно-настраиваСмого с синхронизированными часами точности сигнала. ПЦБ позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сигналы  Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ способом  с Π½ΠΈΠ·ΠΊΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ искаТСния  ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ частотным Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

-121-

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ состоит ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ².

НавСрху показываСтся Β Ρ„ΠΎΡ€ΠΌΠ° сигнала ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π‘Π»Π΅Π²Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сигнал. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ частотой, симмСтриСй, Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄ΠΎΠΉ ΠΈ смСщСниСм сигнала. Π‘ΠΏΡ€Π°Π²Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ клавиши для числСнного задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… установок.

Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ экрана ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрыта, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ малСнькой ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’Π°ΠΊ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Β­ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ малСньким ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ  мСньшС мСста Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ экранС. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΠΊΠ½ΠΎ станСт ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. Π’ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ <Shift — < > ΠΈ <Shift -> >.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Π€ΠΎΡ€ΠΌΠ° сигнала

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

Π€ΠΎΡ€ΠΌΠ° сигнала ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ сигналы:

Бинус Β — гСнСрируСтся синусоида

Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ — гСнСрируСтся Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ — гСнСрируСтся ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ

Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ синтСз — гСнСрируСтся постоянный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ПЦБ

Π‘Π΅Π»Ρ‹ΠΉ ΡˆΡƒΠΌ — гСнСрируСтся Π±Π΅Π»Ρ‹ΠΉ ΡˆΡƒΠΌ

Π€Π°ΠΉΠ» — гСнСрируСтся сигнал ΠΎΡ‚ Ρ„Π°ΠΉΠ»Π°

О сигнальном Ρ‚ΠΈΠΏΠ΅ Π€Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΏΠΎΠ·ΠΆΠ΅.

-122-

Частота

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

Π’ Частотном Π±Π»ΠΎΠΊΠ΅ Π΅ΡΡ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для управлСния частотой сигнала. БСмь Π΄Π΅ΠΊΠ°Π΄Π½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ частотный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Β­ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна частота. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ устанавливаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π²ΠΈΠΆΠΊΠ°. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ ΠΎΡ‚ 0,2 Π΄ΠΎ 2

Когда Ρ„ΠΎΡ€ΠΌΠ° сигнала установлСна Π² ПЦБ, частотноС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

БиммСтрия

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

БиммСтрия сигнала ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ части ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°. БиммСтрия 50 % ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ — Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€ΠΎΠ²Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Β Π΄Π²ΠΈΠΆΠΊΠ° Β Π² Π±Π»ΠΎΠΊΠ΅ Π‘ΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ, симмСтрия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π° ΠΎΡ‚ 1 Π΄ΠΎ 99%. Кнопка сСрСдина (mid) устанавливаСт ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ Π² 50 %, ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ полоТСния.

Когда сигнальная Ρ„ΠΎΡ€ΠΌΠ° установлСна Π² ПЦБ ΠΈΠ»ΠΈ Π‘Π΅Π»Ρ‹ΠΉ ΡˆΡƒΠΌ, Ρ‚ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ симмСтрии ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

Амплитуда

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

Амплитуда Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΏΡ€ΠΈ Ρ‚Ρ€Π΅Ρ… значСниях Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹: Π½Π΅ ослаблСнный,Β  -20 Π΄Π΅Ρ†ΠΈΠ±Π΅Π» ослаблСния ΠΈΠ»ΠΈ -40 Π΄Π΅Ρ†ΠΈΠ±Π΅Π» ослаблСния. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π²ΠΈΠΆΠΊΠ° напряТСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСно ΠΌΠ΅ΠΆΠ΄Ρƒ 0 Π’ΠΎΠ»ΡŒΡ‚ ΠΈ 12 Π²ΠΎΠ»ΡŒΡ‚Π°ΠΌΠΈ (ΠΈΠ»ΠΈ 0 Π’ΠΎΠ»ΡŒΡ‚ ΠΈ 10 Π²ΠΎΠ»ΡŒΡ‚, зависит ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ инструмСнта).

-123-

 ПЦБ смСщСниС

Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ смСщСниС Π¦Π‘ ΠΊ сигналу Π²Ρ‹Ρ…ΠΎΠ΄Π°. Π’ Π±Π»ΠΎΠΊΠ΅ БмСщСния Π¦Π‘ Π΅ΡΡ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ смСщСния. Кнопка 0 ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ смСщСниС Π¦Π‘

Когда Ρ„ΠΎΡ€ΠΌΠ° сигнала установлСна Π² Π¦Π‘, Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Β­ Π¦Π‘ сигнала.

ЧислСнный Π²Ρ…ΠΎΠ΄.

ВсСми Π²Ρ‹ΡˆΠ΅ описанными функциями ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Когда ΠΎΠΊΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, которая позволяСт Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ настройки.

Π­Ρ‚ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΡ‹ΡˆΡŒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ Β ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ этом случаС, ΠΎΠΊΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использовано. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΈ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΌΠΈΠ³Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹, ΠΈ нуТная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Π°. Π’Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ <Enter> Β Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ:

-124-

SΒ Β Β Β Β Β Β Β Β  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ сигнала Β Β Β Β Β Β Β Β Β Β Β 

DΒ Β Β Β Β Β Β Β  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π¦Π‘ сигнала

AΒ Β Β Β Β Β Β Β  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ сигнала

FΒ Β Β Β Β Β Β Β Β  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ частоту сигнала

0..9Β Β Β Β Β  ΠŸΡ€ΠΈΠ±Π°Π²ΡŒΡ‚Π΅ Ρ†ΠΈΡ„Ρ€Ρƒ ΠΊ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ

.Β Β Β Β Β Β Β Β Β Β  ΠŸΡ€ΠΈΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ Β ΠΊ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ

—Β Β Β Β Β Β Β Β Β  ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°

CΒ Β Β Β Β Β Β Β  ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ Π²Ρ…ΠΎΠ΄

<—Β Β Β Β Β Β Β  ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ послСдний Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ

<-/Β Β Β Β Β Β  Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ

EscΒ Β Β Β Β  ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ Π²Ρ…ΠΎΠ΄

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ установка

Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ 8 Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сигнала.

[Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ рисунок]

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, сигнал с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄ΠΎΠΉ, смСщСниСм, частотой ΠΈ симмСтриСй ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ установка сохраняСтся вмСстС с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ настройками ΠΈ восстанавливаСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ.

alexxlab

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *