作为一个刚开始学习Python 的大龄菜鸟,从零开始记录自己的学习过程,希望能督促自己不断前进。
#列表,更改列表中某个元素
list1 = [1,5,9,4,6,'may','it']
print(list1)
list1[3]= 'it\'s love'
print(list1)
#元祖,元祖中元素不能更改
tuple1 = (1,5,9,4,6,'may','it')
print(tuple1)
tuple1[3]='it\'s love'
print(tuple1)
运行结果如下:
[1, 5, 9, 4, 6, 'may', 'it']
[1, 5, 9, "it's love", 6, 'may', 'it']
(1, 5, 9, 4, 6, 'may', 'it')
Traceback (most recent call last):
File "C:/Users/Xiao/Desktop/列表与元祖.py", line 9, in
tuple1[3]='it\'s love'
TypeError: 'tuple' object does not support item assignment
##列表中还可使用append()添加元素
list1.append('not happy')
print(list1)
结果如下:
[1, 5, 9, "it's love", 6, 'may', 'it', 'not happy']
索引:list1[1],list1[-1] #还可以为负值,从反方向开始计数
结果:(5, 'not happy')
分片(通过冒号隔开,步长可调节,可正可负,不能为0):list1[-4::2] #默认为从-4到最后的所有元素
结果:[6, 'it']
sentence = raw_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 + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '| ' + sentence + ' |')
print(' ' * left_margin + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '+' + '-' * (box_width-2) + '+')
print()
得到结果:
Sentence: He is a very naughty boy!
+-----------------------------+
| |
| He is a very naughty boy! |
| |
+-----------------------------+
由此,突发奇想,觉得可以做出来一个心形,最近实在憋屈,人生从来没有这么苦闷、不自由的时候,所以想在桃心里面写上‘自由’,照猫画虎,如下:
myword = input('My word: ')
screen_width = 80
text_width = len(myword)
gap_width = len(myword)/2
inter_width = len(myword)/3
print(),print(' '*(screen_width/2-gap_width) + '*' + ' ' * (gap_width*2) + '*'),
print(' '*(screen_width/2-(gap_width*2)) + '*' + ' ' * (gap_width*2) + '*'+' '*(screen_width/2-(gap_width*2)) + '*'),
print(' '*(screen_width/2-(gap_width*2)-inter_width) + '*' + ' ' * (gap_width*4+inter_width*2) + '*'),
print(' '*(screen_width/2-(gap_width*2)) + '*' + myword + '*'),
print(' '*(screen_width/2-inter_width*2) + '*' + ' ' * (inter_width*4) + '*'),
print(' '*(screen_width/2-inter_width) + '*' + ' ' * (inter_width*2) + '*'),
print(' '*(screen_width/2) + '*')
结果报错:
Traceback (most recent call last):
File "C:/Users/Xiao/Desktop/列表与元祖.py", line 16, in
print(),print(' '*(screen_width/2-gap_width) + '*' + ' ' * (gap_width*2) + '*'),
TypeError: can't multiply sequence by non-int of type 'float'
感觉是因为不是整数型,所以修改如下:
myword=input('Sentence: ')
myword
screen_width = 80
text_width = len(myword)
gap_width = int(len(myword)/2)
inter_width = int(len(myword)/3)
print(),print(' '*int(screen_width/2-gap_width) + '*' + ' ' * int(gap_width*2) + '*'),
print(' '*int(screen_width/2-(gap_width*2)) + '*' + ' ' * int(gap_width*2) + '*'+' '*int(screen_width/2-(gap_width*2)) + '*'),
print(' '*int(screen_width/2-(gap_width*2)-inter_width) + '*' + ' ' * int(gap_width*4+inter_width*2) + '*'),
print(' '*int(screen_width/2-(gap_width*2)) + '*' + myword + '*'),
print(' '*int(screen_width/2-inter_width*2) + '*' + ' ' * int(inter_width*4) + '*'),
print(' '*int(screen_width/2-inter_width) + '*' + ' ' * int(inter_width*2) + '*'),
print(' '*int(screen_width/2) + '*')
得到结果如下:
Sentence: -----Freedom!-----
* *
* * *
* *
*-----Freedom!-----*
* *
* *
*
发现第四行出现问题,并没有对齐,继续修改:
myword=input('Sentence: ')
myword
screen_width = 80
text_width = len(myword)
gap_width = int(len(myword)/2)
inter_width = int(len(myword)/3)
print(),print(' '*int(screen_width/2-gap_width) + '*' + ' ' * int(gap_width*2) + '*'),
print(' '*int(screen_width/2-(gap_width*2)) + '*' + ' ' * int(gap_width*2) + '*'+' '*int(screen_width/2-(gap_width*2)) + '*'),
print(' '*int(screen_width/2-(gap_width*2)-inter_width) + '*' + ' ' * int(gap_width*4+inter_width*2) + '*'),
print(' '*int(screen_width/2-(gap_width*2)) + '*' + ' ' * int(gap_width) + myword + ' ' * int(gap_width) + '*'),
print(' '*int(screen_width/2-inter_width*2) + '*' + ' ' * int(inter_width*4) + '*'),
print(' '*int(screen_width/2-inter_width) + '*' + ' ' * int(inter_width*2) + '*'),
print(' '*int(screen_width/2) + '*')
终于得到了一个巨丑的心形,想想自己的处境蛮讽刺的:
Sentence: -----Freedom!-----
* *
* * *
* *
* -----Freedom!----- *
* *
* *
*
结果:(True, True)
list1.append(4),在列表的末尾增加新的对象;
list1.count(4),统计某个元素在列表中出现的次数;
list1.extend([5,9,8,'crystal']),在列表末尾一次性追加多个对象;
list1.index('h'),从列表中找出某个值第一个匹配项的索引位置;
list1.insert(3,'can'),将对象插入列表中;
list1.pop(),移除列表中的某个元素,默认最后一个,与append对应,分别为入栈(push)和出栈(pop);
list1.remove('5'),移除列表中某个值的第一个匹配项;
list1.reverse(),将列表中的元素反向存放;
list1.sort(),将列表中的元素按一定顺序排列,在原位置进行排序,排序后,原列表即改变,如要保留原列表,需提前赋值,再排序;或者用sorted函数,y = sorted(list1),list1不变,而y为排序后结果;sort 可选参数:key和reverse。
比较大小:cmp(55,90),结果-1;cmp(155,90),结果1;cmp(55,55),结果0。还可用于sort,list1.sort(cmp)。