Python数据分析答疑2:字符串 列表

8.2第二课: 字符串 列表

在开课前放的优秀文章可以参考简书的文章list : http://www.jianshu.com/p/7cb84cfa56fa

第二课作业:

作业1:

下方是一个嵌套的列表,通过对x分割,打印“e”和“g”。

提示:使用 x[ ][ ]的形式。x如下:

x = [[“a”, “b”, “c”],

[“d”, “e”, “f”],

[“g”, “h”, “i”]]

作业2:找最大值和最小值

以下给出一个团队中成员名和他们各自的微信好友数量,请模仿上述词频的例子,通过for循环找出团队中好友数最多和最少的两个人。如下:

names = [‘小赵’,’小钱’,’小孙’,’小李’,’小王’,’小张’]

friends = [45, 100, 67, 136, 77, 17]

下文 Q&A 目录索引:

1,代码运行:单引号&输出

2,代码运行出错

3,and, or, not 的执行优先级

4,github中无法查看代码

5,python作为工具使用

6,如何上传代码至jupyter

7,Jupyter安装完成后的根目录

8,空格健缩进

9,代码运行显示不出人名

10,“空格”和“引号”的使用

11,代码运行出错

12,mac系统jupyternotebook无法跳转浏览器

13,代码运行:引号

14,代码运行:引号

15,1 在不同运行中存储的位置

16,代码理解:unique_words,counts[index]

17,代码理解:count[i] ,bigWord = unique_words[I]

18,python IDLE编辑中文

19,代码运行:依次取汉字

20,代码运行:中断方法

21,代码理解:内外循环

22,代码运行出错

23,代码运行:执行代码无反映

24,jupyter notebook的launch 没反应

25,运行代码:有星号

26,代码运行:三引号

27,代码理解:len, count

28,代码运行优化:精简步骤

29,代码运行出错

30,代码理解:for i in range(len(friends)

31,()和 [ ] 用法及区别

32,代码运行出错

33,代码理解:tab

34,代码运行出错

《Python数据分析答疑2:字符串 列表》 图2-1

Q 1 :如上图(图2-1),我有两个问题:

1.什么时候会出现单引号?

2.输入 x[1][1]

            x[2][0]

为什么只有一个输出?

A:1、不用print函数时会出现单引号。

2、你这样输入,只显示最后一个运算结果

《Python数据分析答疑2:字符串 列表》 图2-2

Q 2 :如上图(图2-2),最小值函数代码那一行为什么是从1重新开始,我试了接上面的代码直接输入,输出显示错误。这是为什么?以及怎么转换?中间加了一个 In[1] ,后面又是和前面连续的。

A:应该是你程序中途shutdown了吧(当程序中途停止运行时,in[ ]里面数字会重新从1开始计数),试试重启jupyter,再运行

追问Q:不是,那是老师课件里面的。从1重新开始才能输出正确。如果接着In[35],输入代码,运行In[36]的话,则输出不正确。

Q 3 :关于 and, or, not 的执行优先级,以及str能够用过int()变为整型吗?

A:关于and or not的优先级问题:

not比or和and的优先级高,or和and优先级相同

比如 not True or False and True,计算顺序为:

1 首先计算not True 为False

2 然后计算 False or False为False

3 然后计算False and True为False

所以结果为False

str可以使用int变为整型。比如int(‘123’) 结果为123

追问 Q :但是1 or 0 and 0=1(0和1可直接对应True和False如果我没理解错的话),1 or 0 and 0 and 1 =1,(1 or 0) and 0 and 1 =0所以我觉得or要先于and执行

A:同优先级按从左到右依次执行

Q 4 :#github中无法查看代码#

大家可以打开github中的代码吗?我进入到图里的页面就在应该显示代码的地方加载不出来,也没看到可以下载的地方,请问要如何解决?拜谢~神奇的是,用最新版的chrome打开其他网页和下载都没问题,就是这里查看不了_(:з」∠)_

A1:这个真的是网络问题,实在不行换浏览器吧

A2: PythonData 点击这个回到首页才有下载通道。首页右侧绿色按钮(Clone or download)点击就是下载地址→选择Download ZIP 就可以下载了

Q 5 :请问,如果只用python能不能做一个工具:将微信群里的发言信息变成格式化的信息,然后分类统计和汇总?哪位能指点一下?

A:前提是微信是否可以导出,并且是明文。如果可以,就能使用python 分析了.关于分析 就要看你的具体需求了,比如某人发言条数占比、词频分析之类的。根据需求对数据进行处理清洗。

Q 6 : 如何上传代码至jupyter ?

A:Jupyter Notebook 根目录修改 windows7

打开终端:开始→所有程序→Anaconda3→Anaconda Prompt

输入:jupyter notebook –generate-config 生成配置文件

红框一:输入的代码;红框二:生成配置文件路径(即文件地址)。按照路径找到文件:右键→编辑jupyter_notebook_config.py 打开编辑页面

现在需要查找修改代码的位置:快捷键(Ctrl+F)

需要对这行代码进行修改:源码:#c.NotebookApp.notebook_dir = ”  修改为:c.NotebookApp.notebook_dir = ‘D:\python’  。此处以修改到D盘python文件夹下为例:

鼠标点击下即可获得该地址。

保存文件

从新运行Jupter notebook

课件可以拷贝到D:\python下,从新打开Jupyter即可看到课件。

Q 7 :哪位可以指导一下我的Jupyter安装完成怎么没有课件中的的根目录啊?

A:目录要自己创建的

Q 8 :按空格健 没有空格,反而是缩进了,不知道咋修改

A:这个问题好难解。确认一下你的输入法,是不是中文全角状态下输入的空格。

《Python数据分析答疑2:字符串 列表》 图2-3

Q 9 :如上图(图2-3),为什么显示不出人名?

A:建议使用python3,python2中文有编码问题。

Q 10 :有没有同学总结过关于“空格”和“引号”:哪些地方硬性要求必须有空格,哪些地方可有可无,现在完全凭猜在打空格。。。 以及引号,好像 ‘ 和 ” 都可以? 

A1:引号的问题,我以前学过一点入门,好像是没有差别。打空格是个人习惯,好看一点,你不打也没事啊。我以前用过一个python的编程器,它会自动帮你拉开间距,很美观。

A2:老师上课说单引号和双引号基本可以互换,只是在需要引号套引号的时候区分,我试了一下是一样。空格我感觉是不是个人习惯呀,余老师的课程里都打,我不打也没影响结果,就是看着有点挤。。。

《Python数据分析答疑2:字符串 列表》 图2-4

Q 11 :上图(图2-4)显示,这是个什么错误,看着没问题啊

A:原因可能是之前你使用了类似 max=(1, 3, 4),你可以在菜单kernel-> restart重置一下,然后再执行试试。

Q 12 :关于mac系统jupyternotebook无法跳转浏览器的问题

A:大家可以看下这个链接:https://github.com/jupyter/notebook/issues/2438

Q 13 :print( ) 输出,有引号,和直接变量,没引号的输出,有什么区别?

A:没有区别,只是一个是notebook帮助输出的,一个使用print输出。我记得老师上课有说到这块。

《Python数据分析答疑2:字符串 列表》 图2-5

Q 14 :请看上图(图2-5),这里强制转化成字符串,为什么没有引号?

A:print打印出来的不带引号,使用notebook打印是带引号的。

Q 15 :我有个问题:

a = b = c = 1和 a =1,b =1,c =1。

1 存储的位置是不是一样?

第二个表达式中的“1”都存在同一个内存位置上吗?还是在不同的位置?

A:这个问题厉害了。第一情况:计算机会在某地址创建一个整数对象1,然后a、b、c都指向它。所以此时内存中只有一个数字对象。

第二情况:计算机会生成三个新的整数对象1,分别存储在不同的地址中,a、b、c分别指向这个三个地址,所以此时内存中有三个数字对象。

当给变量赋值的时候,是真实的划出了内存的一个区域,并且将这个区域命名(也就是变量名);而不是指向之前已经存在的某一个区域。

Q 16 :课程中,有段代码,我始终搞不明白。

for word in words:

index=unique_words.index(word)

counts[index]=counts[index]+1

print(counts)

[7, 2, 2, 1, 3, 2, 1, 2, 1, 1, 1, 1]

这句话中, index=unique_words.index(word)

counts[index]=counts[index]+1

这两行是什么意思呢, counts[index] 指的是索引的次数吗,能用更直白的话,描述这几段代码吗?

A:假设现在有unique_words = [“hello”, “world”]

counts = [0, 0]

注意counts中的对应位置数据就是unique_words中每个单词的词频,初始时都为0。

现有列表words = [“hello”, “world”, “world”, “world”, “hello”],计算每个单词词频数。下面开始遍历words,第一个遍历单词为”hello”,此时查找一下”hello”在unique_words哪个位置,此处位置为0,则可以把counts位置0处的值加1。此时counts的值即为[1, 0],表示hello词频为1,world词频为0,然后我们在进行第二次遍历,单词为world,找到其在unique_words位置为1,把对应的counts中表示world词频的值,即位置1处的值+1,以此类推。最终结果是counts=[2, 3],表示hello出现2次,world出现3次。

《Python数据分析答疑2:字符串 列表》 图2-6

Q 17 :老师,问题在上图(图2-6),请过目。这里面的含义不懂,思考方式也没清晰。

A:首先需明白unique_words和counts一一对应,unique_words为单词列表,counts为对应位置单词的频数。

下面遍历counts中的每个元素,if count[i] > bigCount :  表示遍历的最新的某个count值是否大于bigCount,如果成立执行下面的两条语句:

bigWord = unique_words[I]   , 表示把这个位置单词找到作为bigword,也就是最高频单词。

bigCount = counts[I]   ,i表示遍历的最新位置,将bigCount赋值为最新最大值

Q 18 :直接用python IDLE打开的页面是不能直接编辑中文的吗?”小明” 这样的词是打不出来的。

A:python IDLE我没怎么用过。通常数据分析研究会用jupyternotebook,开发人员会用pycharm。

《Python数据分析答疑2:字符串 列表》 图2-7

Q 19 : 请老师指点一下,如何把一段汉字的字符挨个挑出来?我用了课程教的语句,可是出现错误:图片(图2-7)所示,而且我看汉字是以一行为一个字符串的,这样能依次取汉字吗?

A:unique_words.append()这行主要缩进,以保证这行代码属于if语句块。

注:python以缩进区分代码层级的。

《Python数据分析答疑2:字符串 列表》 图2-8

Q 20 :(图2-8)自定义函数,(这是个有错误的函数,关于if判值那边要改),这种错误的函数一旦运行了,即使我esc-ii或者kernet interupt,右上角显示了interupting kernel,却无法正常中断,只研究出restart中断,想问问老师正确的中断方法是什么

daikuane=float(input(“\n请输入贷款额,或者输入0来结束报告”))

if daikuane==float(0):

print(“结束报告”)

应该直接float(input..)

A:对的,因为input出来的结果是字符串类型。因此判断条件可以是daikuane==’0’或者float(daikuane)==’0.0’。不然==会永远无法成立,从而出现死循环。float(daikuane)==0.0,上面写错了。

《Python数据分析答疑2:字符串 列表》 图2-9

Q 21 :关于内外循环,我觉得i=1应该不能算是内循环, 而是外循环的一部分。我理解的内循环是红框,外循环是橙框。和老师蓝色虚线标的不同(图2-9)

A:对的,准确的说是这样的,理解深刻👍。i是内层循环的控制变量。

《Python数据分析答疑2:字符串 列表》 图2-10

Q 22 :谁帮我看看我的代码有什么问题(图2-10),之前运行成功过,改动了一点就失败了,已经忘记怎么改动的了。。。。

A:看着似乎是括号没有配对 第四行代码

Q 23 :作业做完了,不过遇到一个问题,就是执行代码的时候无反映。只有重开页面才会有反应。改过代码后、还需要再重开一次页面或者另外开启一个Notebook 才会有反应、这样周而复始的重新开启页面,才做完的作业。请问老师是什么问题?

A:环境不好吧,建议重启下juypter 或者重启下电脑之类的

Q 24 :在navigator中点击jupyter notebook 下的launch 没反应 是什么情况

A:我原来也遇到过这个问题。我是win7,下载了google chrome并设置成默认浏览器之后就可以了。

Q 25 :运行代码有星号出现后,就没有任何输出了,请问怎样除掉它?如果关了再重来之后又正常了。应该是我的错误操作造成的。

A:我之前也遇到这个问题,后来发现是进入了死循环。你可以看看之前运行的语句是否有死循环出不来的情况。也可以在运行页面上方找到 Kernel 的restart 重启

《Python数据分析答疑2:字符串 列表》 图2-11

Q 26 :图中(图2-11),为什么是三引号,不是单,不是双?

A:三引号是三个单引号,这样可以换行

Q 27 : len(unique_word)=11,  为什么counts=[0]*len(unique_word)=[0,0,0,0,0,0,0,0,0,0,0], 

A:counts是一个列表,counts = [0]*len(unique_word)就是一个初始化一个和unique_word一样长度的列表

Q 28 :作业一:print(x[1][1])

                            print(x[2][0])

问两个问题:.作业一的代码如何精简,想只用一个 print 但是做不到;

2. 怎么用 max 和 min 函数来写作业二?

A:print(【】【】,【】【】)

A:print(x[1][1]+x[2][0])

《Python数据分析答疑2:字符串 列表》 图2-12

Q 29 :作业二(图2-12),结果没运行正确,不知道问题出现在哪里,求帮助

A:图中,那里的提示是 “ if ” 那一行有语法错误,“ = ” 那里改成 “ is ”试试,可以对照老师的代码看看。

《Python数据分析答疑2:字符串 列表》 图2-13

Q 30 :range:生成整数序列

len:获取序列元素个数

那么,for i in range(len(friends):  的准确意思是什么?是 i 代表了friends数列的没每一个元素吗?那么len的作用是什么?

这里只对friends进行循环,没有对names进行循环,计算机是如何把两个数列对应起来的?或许我的问题很白痴,但我真是想不明白啊!请老师指点。

A:len是获取列表元素个数 range可以根据长度生成一个序列。比如此处len(friends)为6,range(6)为0,1,2,3,4,5。for循环可以根据此序列对friends遍历了。

Q 31 :望老师解答一下()和 [ ] 用法及区别,目前处于依葫芦画瓢阶段。

A :简单点说,()主要用于函数方法的调用,如max(1, 2, 3);而[ ]主要用于数据结构中数据的访问,如list类型数据a, a[1]访问位置1的元素,字典d, d[“suyi”] 访问键为suyi的值。

《Python数据分析答疑2:字符串 列表》 图2-14

Q 32 :对作业一有疑问,print[x=[1:2],[1;2]] 结果是[ ],为什么这样结果不对啊?(图2-14)

A:这是因为切片操作是不会改变列表维数的,也就是x[1:2]返回的结果是[[“d”, “e”, “f”]],仍然是个二维数组,此时访问其中的数据,如d,则需要x[1:2][0][0],而不是x[1:2][1]。

可以考虑下为什么切片出来的结果不改变列表的维度?假设切片采用x[0:2],结果就是[[“a”, “b”, “c”], [“d”, “e”, “f”]],第一维的元素是两个元素,显然这种情况的数据是没有办法降维的。

Q 33 :在print()前面多敲一个tab,和多敲两个tab,答案都是不同,请问为什么?

A:Python是以缩进区分代码块的。一个tab属于for执行语句,两个tab属于if里面执行语句

Q 34 :我没弄明白,把同学但作业拿来照抄,为什么和同学打一样但编码也会出错啊?搞的我心力憔悴。 

A:print 对齐 for ,逗号全英文

以上内容整理来源于新生大学讨论区和作业区,若有误请各位指正!

第二课作业同学们开始渐渐上手,有同学可以用两种或者两种以上的语法来解题,我返回去看了下自己的作业,只交了第一题。。。惭愧啊!

    原文作者:Lochaiching
    原文地址: https://www.jianshu.com/p/ccea5439b4a1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞