In [13]:
data_list = [1, 2, 3, 4]
print(data_list * 2)
# 単純に繰り返すだけ
[1, 2, 3, 4, 1, 2, 3, 4]
In [14]:
# append remove pop del
data_list.append('aaa')
data_list
Out[14]:
[1, 2, 3, 4, 'aaa']
In [15]:
# [1, 2, 3, 4, 'aaa']
data_list.remove(3)
data_list
Out[15]:
[1, 2, 4, 'aaa']
In [20]:
del data_list
data_list
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-20-b2cab8525849> in <module>
----> 1 del data_list
      2 data_list

NameError: name 'data_list' is not defined
In [24]:
dic = {'a':1, 'b':2, 'c':3}

dic.keys()
Out[24]:
dict_keys(['a', 'b', 'c'])
In [27]:
dic.values()
Out[27]:
dict_values([1, 2, 3])
In [30]:
for dic_key in dic.keys():
    print(i,dic[dic_key])
a 1
b 2
c 3
In [32]:
for i in range(1,11,2):
    print(i)
1
3
5
7
9
In [33]:
for key, value in dic.items():
    print(key, value)
a 1
b 2
c 3
In [38]:
# リスト内包表記 for in
li = [i * 2 for i in range(11)]
print(li)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
In [43]:
# リスト内包表記 for in if
li2 = [i for i in li if i % 6 == 0 in li]
Out[43]:
[0, 6, 12, 18]
In [44]:
# zip関数
a = [1,2,3,4]
b = [5,6,7,8]

for one, two in zip(a, b):
    print(one, two)
1 5
2 6
3 7
4 8
In [46]:
# while 文
num = 1
li =[]

while num < 10:
    li.append(num)
    num += 1
    
print(li)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
In [47]:
# 関数

def func(a, b):
    return a + b

func(10,20)
Out[47]:
30
In [48]:
# 無名関数(ラムダ関数)

# 普通の関数
def calc(a, b):
    return a * b

print(calc(100,200))
20000
In [50]:
# ラムダ関数 リターンしかない場合
(lambda a, b: a*b)(100, 200)
Out[50]:
20000
In [51]:
# map関数

# 普通のやりかた
def calc2(x):
    return x * 2

for num in [1,2,3,4]:
    print(calc2(num))
2
4
6
8
In [53]:
# map関数を使う 関数と元リストを渡すとmapオブジェクトが得られる
map_object = map(calc2, [1,2,3,4]) # <map at 0x26160d36208> 
list(map_object)
Out[53]:
[2, 4, 6, 8]
In [57]:
# ラムダを使えば事前にcalc2関数も不要
map_object2 =  map(lambda x:x * 2, [1,2,3,4])
list(map_object2)
Out[57]:
[2, 4, 6, 8]
In [67]:
# reduce関数 filter関数
help(filter)
Help on class filter in module builtins:

class filter(object)
 |  filter(function or None, iterable) --> filter object
 |  
 |  Return an iterator yielding those items of iterable for which function(item)
 |  is true. If function is None, return the items that are true.
 |  
 |  Methods defined here:
 |  
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |  
 |  __iter__(self, /)
 |      Implement iter(self).
 |  
 |  __next__(self, /)
 |      Implement next(self).
 |  
 |  __reduce__(...)
 |      Return state information for pickling.
 |  
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.

In [71]:
# 例
s = 'Data Science'
i=0
for i in range(len(s)):
    print(s[i])
D
a
t
a
 
S
c
i
e
n
c
e
In [74]:
sum([num for num in range(51)])
Out[74]:
1275
In [79]:
# クラスとインスタンス
class Printer():
    def print_name(self):
        print(self.x, self.y)
        
# インスタンスの作成
p = Printer()

# アトリビュートの作成
p.x = 100
p.y = 200

# メソドの使用
p.print_name()
100 200
In [87]:
# クラス __init__を使ってみる
class Printer2(Printer): # クラスPrinterの機能を継承してみます。
    
    # 引数を入れた時点でアトリビュートが生成されるようにします。
    def __init__(self, x, y):
        self.x = x
        self.y = y

# インスタンスの作成
p2 = Printer2(1000,8000)

# アトリビュートの確認
print(p2.x)
print(p2.y)

# 継承したクラスメソドの確認
p2.print_name()
1000
8000
1000 8000
In [5]:
# 素数を作るプログラム
'''コンセプト
素数 = 1とそれ自身の数以外は約数を持たない数

その自然数num以下の自然数aで小さい数から順番に割った余りががゼロになったとき、sの自然数aが自然数numと同じ値なら、自然数numは素数。

num =[2,3,5,7,9,11,13,17,19]
'''
class PrimeNumberMaker():
    def __init__(self, max_num):
        self.max_num = max_num
        self.li = []
        
        
    def calc(self):
        num = 2
       

        while num < self.max_num:
            for devider in range(2, num + 1, 1):
                if num % devider == 0:
                    if num == devider:
                        self.li.append(num)
                        # print(num)
                    break # 割り切れたときにdeviderと同じ数値でなかったら素数ではない。
            num += 1
            
        self.li_length = len(self.li)
        print('検出した素数の数 : {0}'.format(self.li_length))
        print(self.li)


            
# インスタンスの作成
p = PrimeNumberMaker(1000)
print(p)
print(p.max_num)
print(p.li)

# メソドの実行
p.calc()
<__main__.PrimeNumberMaker object at 0x000001DE0741FB38>
1000
[]
検出した素数の数 : 168
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
In [38]:
# 素数の数を調べる
%matplotlib inline
import matplotlib.pyplot as plt
from IPython.display import clear_output



# グラフをプロットする関数
def ploter(limit_nums, length):
    
    plt.plot(limit_nums, length)
    plt.title('the number of Prime Numbers in the number')
    plt.ylabel('the number of Prime Numbers')
    plt.xlabel('Number')
    plt.show()

# メインスクリプト
length = []
limit_nums = [ 10 ** a for a in range(4)]

for i, limit_num in enumerate(limit_nums):
    p = PrimeNumberMaker(limit_num)
    
    p.calc()
    length.append(p.li_length)
    clear_output()
    ploter(limit_nums[0:i+1], length)
    
In [ ]: