Study Group: 巾凡哥出品 品質保證 python 03
List(補)
list = [ 'a', 'b', 'c', 'd', 'e']
# index range: -5 ~ 4
# -N ~ (N-1)
"""
-5 -4 -3 -2 -1 0 2 3 4 5
a b c d e a b c d e
"""
list = [1, 2, 3, 4]
list[-100: -2] # [1, 2]
list = [ 'a', 'b', 'c', 'd', 'e']
-
shallow copy
- list[:] or list[:] => shallow copy
- 參考位置 而不會建出新的 所以會有修改原本物件的 issues
aa = { 'name': 'Tim'} list1 = [ 'a', 'b', 'c', 'd', 'e', aa] list2 = list1[::] aa['name'] = 'John' print(list1) # ['a', 'b', 'c', 'd', 'e', {'name': 'John'}] print(list2) # ['a', 'b', 'c', 'd', 'e', {'name': 'John'}]
list = [ 'a', 'b', 'c', 'd', 'e']
a = list[::2]
print(a) # ['a', 'c', 'e']
# reverse list
aa = { 'name': 'Tim'}
list1 = [ 'a', 'b', 'c', 'd', 'e', aa]
print(list1[::-1]) # [{'name': 'Tim'}, 'e', 'd', 'c', 'b', 'a']
function
def func():
- javascript
a = function() {
console.log("hello")
}
console.log(a())
// undefined
If-Else
if cond:
exec code
else:
else code
# && => and
# || => or
# if a == b and b == a or c == 1
def myFunc(n):
if type(e) == str:
print("Dict")
else:
print("Type error")
-
isinstance
-
if-elif-else
if cond1:
stmt1
elif cond2:
stmt2
else:
stmt3
try:
print(list1[100])
except Exception as e:
print('excpet', e) # except list index out of range
else:
print('haha')
Input
def greater(n1, n2):
if n1 > n2:
return 'x is greater than y'
elif n1 == n2:
return 'x is equal to y'
else:
return 'x is less than y'
x = input("enter x:")
y = input("enter y:")
print(greater(x, y))
- What is the result of the following code after user input 10 and 20?
- x is less than y
- What is the result of the following code after user input 11 and 11a?
- x is less than y
-
The comparison uses lexicographical ordering: first the first two items are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two items are compared, and so on, until either sequence is exhausted.
- 字⺟逐⼀轉為 Unicode 比較⼤⼩,如 a > A
- 在某⼀個字串遍歷完後仍未能決定⼤⼩,則以長度決定
- 使⽤
ord
將字元轉為 unicode-
ord taks a single parameter
-
https://stackoverflow.com/questions/4806911/string-comparison-technique-used-by-python
-
String Format
-
% format
- % works at Python 2 & Python 3
- Similar to % formatting in C
- %d => int
- %f / %lf => float / double
- %c =>character
- %s =>string
name = 'John' age = 20 greeting = "I'm %s and I am %d year-old" %(name, age)
-
f-string
- f string works after Python 3.6+
- Usage:
f"String... {var1} {var2}"
name='John' age = 20 greeting = f"My name is {name} and I am {age} year-old."
-
format
name = 'John' age = 20 print("My name is {} and I am {} year-old".format(name, age) )
print("My name is {name} and I am {age} year-old".format(name="John",
age=20) )
name = "John"
age = 20
print("My name is {1} and I am {0} year-old".format(age, name) )
print("My name is {1.upper()} and I am {0} year-old".format(age, name) )
attrs = ['John', 20]
print("My name is {0[0]} and I am {0[1]} year-old".format(attrs) )
attrs = {"name":"John", "age": 10}
print("My name is {name} and I am {age} year-old".format( **attrs ) )
- python string template string example
from string import Template
t = Template('$name is the $job of $company')
s = t.substitute(name='Tim Cook', job='CEO', company='Apple Inc.')
print(s)
# dictionary as substitute argument
d = {"name": "Tim Cook", "job": "CEO", "company": "Apple Inc."}
s = t.substitute(**d)
print(s)
Unpacking
- unpacking list(tuple also works)
# * unpacking for list( tuple also works!)
# equivalent to …[ array] in javascript
[ *[1, 2, 3], 4, 5]
- unpacking for dict
# ** unpacking for dict
# equivalent to …{ obj} in javascript
{ **{"a": 1}, "b": 2}