#按照输入的年月日显示日期
months = ['January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December']
#以1~31的数字结尾做的列表
endings = ['st', 'nd', 'rd'] + 17 * ['th'] + \
['st' , 'nd', 'rd'] + 7 * ['th'] + \
['st']
#输入要显示的年月日
years = input('Year : ')
month = input('Month (1 - 12): ')
day = input('Day (1 -31): ')
#input返回的是字符串将其转换成数字
month_numb = int(month)
day_numb = int(day)
print(months[month_numb-1] + ' ' + (day + endings[day_numb-1]) + ', ' + years)
Year : 1974
Month (1 - 12): 8
Day (1 -31): 16
August 16th,1974
提供两个索引作为边界,第一个索引的元素是包含在分片内的,而第二个则不包含在分片之内
分片中如果最左边的索引比它右边的晚出现在序列中,则结果就是一个空列表
*步长为正数时从左向右提取元素,步长为负数时从右向左提取元素
*可以利用分片来复制序列 x = [ : ]
#以正确的宽度在居中的“盒子”中打印一个句子
sentence = input("Sentence: ")
screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width) //2
print()
print(' '*left_margin + '+' + '-'*(box_width-2) + '+' )
print(' '*(left_margin+2) + '|' + ' '*text_width + '|')
print(' '*(left_margin+2) + '|' + sentence + '|')
print(' '*(left_margin+2) + '|' + ' '*text_width + '|')
print(' '*left_margin + '+' + '-'*(box_width-2) + '+' )
print()
============== RESTART: /Users/apple/Desktop/python/sentence.py ==============
Sentence: learn python
+----------------+
| |
|learn python|
| |
+----------------+
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
如上为成员资格 in 的用法,在UNIX系统中,这两行代码可以作为查看文件可写和可执行权限的脚本
查看用户输入的用户名和PIN码是否存在于数据库中 如果存在就在屏幕上打印 ‘Access granted’
database = [
['albert', '1234'],
['dilbert', '4242'],
['smith', '7524'],
['jones', '9843']
]
username = input('User name: ')
pin = input('PIN code: ')
if [username, pin] in database: print ("Access granted")
根据字符串创建列表:list(‘Hello’) [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
列表的元素赋值,元素删除,分片赋值距离
x=[1,1,1]
x[1] = 2
x
[1, 2, 1]
names = [‘Alice’, ‘Beth’, ‘Cecil’, ’ Dee-Dee’, ‘Earl’]
del names[2]
names
[‘Alice’, ‘Beth’, ’ Dee-Dee’, ‘Earl’]
name = list(‘Perl’)
name
[‘P’, ‘e’, ‘r’, ‘l’]
name[2:]
[‘r’, ‘l’]
name[2:] = list(‘ar’)
name
[‘P’, ‘e’, ‘a’, ‘r’]name = list(‘Perl’)
name[1:] = list(‘ython’)
name
[‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]
numbers = [1, 5]
numbers[1:1] = [2,3,4]
numbers
[1, 2, 3, 4, 5]
numbers[1:4] = []
numbers
[1, 5]
1、append方法—在列表末尾追加新的对象 *append方法不是简单的返回一个修改过的心列表,而是直接修改原来的列表
lst = [1,2,3]
lst.append(4)
lst
[1, 2, 3, 4]
2、count方法—统计某个元素在列表中出现的次数
x = [[1,2], 1, 1, [2, 1, [1, 2]]]
x.count(1)
2
x.count([1,2])
1
3、extend方法—-用新列表扩展原有的列表
a = [1,2,3]
b = [4,5,6]
a.extend(b)
a
[1, 2, 3, 4, 5, 6]
4、insert方法—将对象插入到列表中
numbers = [1,2,3,4,5,6,7]
numbers.insert(3,’four’)
numbers
[1, 2, 3, ‘four’, 4, 5, 6, 7]
5、pop方法—移除列表中的一个元素(默认是最后一个),并且返回该元素的值
*pop方法是唯一一个既能修改列表又返回元素的值(除了None)的列表方法
x = [1,2,3]
x.pop()
3
x
[1, 2]
x.pop(0)
1
x
[2]
pop方法类似于数据结构中的栈,最后被放入栈的最先被移除 LIFO
6、sort方法—将列表进行排序
*需要注意的地方—当用户需要一个排好序的列表副本,同时又保留原有列表不变的时候
x = [4,6,2,1,7,9]
y = x.sort() #Don’t do this
print(y)
None
因为sort方法修改了x却返回了一个空值,最后得到的x已经修改为排好序的列表,原来的列表已经丢失
正确的做法如下:
x = [4,6,2,1,7,9]
y = x[:]
y
[4, 6, 2, 1, 7, 9]
y.sort()
y
[1, 2, 4, 6, 7, 9]
x
[4, 6, 2, 1, 7, 9]
调用x[:]是一种很有效率的复制整个列表的方法,单纯的将y赋值给x是没用的,因为这样就让x和y都指向同一个列表了
另一种获取已经排序的列表副本的方法是,使用sorted方法(返回一个列表):
x
[4, 6, 2, 1, 7, 9]
y =sorted(x)
y
[1, 2, 4, 6, 7, 9]
若想让元素按照相反的顺序排列:
正确:sorted(x).reverse()
错误:x.sort().reverse()
根据元素的长度排序:
x = [‘aardvrk’, ‘abanlone’, ‘acme’, ‘add’, ‘aerate’]
x.sort(key=len)
x
[‘add’, ‘acme’, ‘aerate’, ‘aardvrk’, ‘abanlone’]
反向排序:
x = [4,6,1,7,9]
x.sort(reverse=True)
x
[9, 7, 6, 4, 1]
*元组和字符串都是不能修改的
42
42
42,
(42,)
(42,)
(42,)
如上后两个生成长度为1的元组,但是第一个根本不是元组。(42)和42是完全一样的,但是一个逗号却能改变表达式的值
3*(40+2)
126
3*(40+2,)
(42, 42, 42)