Untitled

 avatar
unknown
plain_text
2 years ago
3.2 kB
8
Indexable
from pylab import *

# Przykład 1: Indeksowanie klasyczne z `range` (Python 2)
a = eye(10)
b = zeros(a.shape)
for w in range(a.shape[0]):
    for k in range(a.shape[1]):
        print(w, k)
        b[w, k] = a[w, k]
imshow(b)

# Przykład 2: Odpowiednik funkcji `range()` z Python 2 w Python 3
a = eye(10)
b = zeros(a.shape)
for w in list(range(a.shape[0])):
    for k in list(range(a.shape[1])):
        print(w, k)
        b[w, k] = a[w, k]
imshow(b)

# Przykład 3: Indeksowanie klasyczne z `xrange` (tylko Python 2)
a = zeros((10, 8))
a[:, (3, 5)] = 1
b = zeros(a.shape)
for w in xrange(a.shape[0]):
    for k in xrange(a.shape[1]):
        print(w, k)
        b[w, k] = a[w, k]
imshow(b, interpolation='none', cmap='Blues')

# Przykład 4: Wykorzystanie comprehension list
a = zeros((10, 8))
a[::2, :] = 1
b = zeros(a.shape)
for (y, x) in [(y, x) for y in range(a.shape[0]) for x in range(a.shape[1]) if a[y, x] > 0.5]:
    print(y, x)
    b[y, x] = a[y, x]
imshow(b, interpolation='none', cmap=cm.gray)

# Przykład 5: Wykorzystanie iteratora `ndindex`
a = zeros((11, 9))
a[5::3, 0:8:3] = 1
b = zeros(a.shape)
for y, x in ndindex(a.shape):
    print(y, x)
    b[y, x] = a[y, x]
imshow(b, interpolation='bilinear', cmap=cm.hot)

# Przykład 6: Wykorzystanie iteratora `ndenumerate`
a = zeros((11, 9))
a[::2, ::2] = 1
b = zeros(a.shape)
for (y, x), i in ndenumerate(a):
    print(y, x, i)
    b[y, x] = a[y, x]
imshow(b, interpolation='none', cmap=cm.autumn)

# Przykład 7: Zwraca iterator z krotki i wypisuje każdą wartość
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit)

# Przykład 8: Tworzenie iteratora
class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self
    
    def __next__(self):
        x = self.a
        self.a += 2
        return x

myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter)

# Przykład 9: Tworzenie iteratora z zakończeniem po 20 iteracjach
class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 20:
            x = self.a
            self.a += 2
            return x
        else:
            raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
    print(x)

# Przykład 10: Obliczanie ciągu Fibonacciego
class Fib:
    def __init__(self, max):
        self.max = max

    def __iter__(self):
        self.a = 0
        self.b = 1
        return self

    def __next__(self):
        fib = self.a
        if fib > self.max:
            raise StopIteration
        self.a, self.b = self.b, self.a + self.b
        return fib

# Przykład 11: Przykład generatora
def reverse(data):
    for index in range(len(data) - 1, -1, -1):
        yield data[index]

for char in reverse('golf'):
    print(char)

# Przykład 12: Wyrażenie generatorowe
unique_characters = {'E', 'D', 'M', 'O', 'N', 'S', 'R', 'Y'}
gen = (ord(c) for c in unique_characters)
next(gen)
next(gen)
tuple(ord(c) for c in unique_characters)
Editor is loading...