1.
# -*- coding: utf-8 -*-
"""
Python Version: 3.5
Created on Sun May 7 23:12:00 2017
E-mail: Eric2014_Lv@sjtu.edu.cn
@author: DidiLv
"""
# 首先声明list 列表是一个可变的容器
xs = [3, 1, 2] # Create a list
print(xs, xs[2]) # Prints "[3, 1, 2] 2"
print(xs[-1]) # 负数输出是按照倒叙输出 prints "2"
print(xs[-2])
#print(xs[-5])
xs[2] = 'foo' # Lists can contain elements of different types
print(xs) # Prints "[3, 1, 'foo']"
xs.append('bar') # Add a new element to the end of the list
print(xs) # Prints "[3, 1, 'foo', 'bar']"
x = xs.pop() # 移除并返回最后一个元素
print(x, xs) # Prints "bar [3, 1, 'foo']"
2.
# -*- coding: utf-8 -*-
"""
Python Version: 3.5
Created on Sun May 7 23:19:39 2017
E-mail: Eric2014_Lv@sjtu.edu.cn
@author: DidiLv
"""
nums = range(5) #记住range函数返回只是一个迭代器真正生成需要list来生成,这是跟python2的区别
print(nums)
print(list(nums))
print(list(nums[2:4]), "\n", list(nums[2:]), "\n", list(nums[:2]))
print(list(nums[:-2])) # 从后面删掉两个然后输出
print(list(nums))
nums_list = list(range(7))
print(nums_list)
print(list(nums_list))
print(nums_list[2:6], "\n", nums_list[3:], "\n", nums_list[:6])
print(nums_list[:-2]) # 从后面删掉两个然后输出
nums_list[2:4] = [8, 1000, 9] #这里的nums_list是一个真正的list从而可以随便的更改
print(nums_list)
输出:
range(0, 5)
[0, 1, 2, 3, 4]
[2, 3]
[2, 3, 4]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
[2, 3, 4, 5]
[3, 4, 5, 6]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4]
[0, 1, 8, 1000, 9, 4, 5, 6]
2.
# -*- coding: utf-8 -*-
"""
Python Version: 3.5
Created on Sun May 7 23:36:49 2017
E-mail: Eric2014_Lv@sjtu.edu.cn
@author: DidiLv
"""
# list是一个可迭代的容器
animals = ['cat', 'dog', 'monkey']
for animal in animals:
print(animal)
animals = ['cat', 'dog', 'monkey']
# 输出index要用enumerate()函数
for i, animal in enumerate(animals):
print('#%d: %s' % (i + 1, animal))
# 转化数据 1: for循环
nums = [0, 1, 2, 3, 4]
squares = []
for x in nums:
squares.append(x ** 2) #一个一个添加
print(squares) # Prints [0, 1, 4, 9, 16]
# 转化数据 2: 列表解析
squares_list = [x ** 2 for x in nums]
print(squares_list)
# 列表解析用处很大,再列出一个超级叼的二分归并程序最简版
def quicksort(arr):
if len(arr) <= 1:
return arr
return quicksort([x for x in arr if x < arr[int(len(arr) / 2)]]) + [x for x in arr if x == arr[int(len(arr) / 2)]] + quicksort([x for x in arr if x > arr[int(len(arr) / 2)]])
print(quicksort([3,6,8,10,1,2,1]))
输出:
cat
dog
monkey
#1: cat
#2: dog
#3: monkey
[0, 1, 4, 9, 16]
[0, 1, 4, 9, 16]
[1, 1, 2, 3, 6, 8, 10]
求问:谁能将此代码再减少一行甚至更多,因为我感觉if判断长度为1时候可以继续减少